diff --git a/contracts/DODOToken/DODOBscToken.sol b/contracts/DODOToken/DODOBscToken.sol index 66fc2b6..4efadb4 100644 --- a/contracts/DODOToken/DODOBscToken.sol +++ b/contracts/DODOToken/DODOBscToken.sol @@ -72,7 +72,7 @@ contract DODOBscToken is InitializableOwnable { return allowed[owner][spender]; } - function redeem(uint256 amount, uint256 value, address redeemToEthAccount) external { + function redeem(uint256 value, address redeemToEthAccount) external { require(balances[msg.sender] >= value, "DODOBscToken: NOT_ENOUGH"); balances[msg.sender] = balances[msg.sender].sub(value); totalSupply = totalSupply.sub(value); diff --git a/contracts/DODOToken/vDODOToken.sol b/contracts/DODOToken/vDODOToken.sol index 805a27c..6422f8f 100644 --- a/contracts/DODOToken/vDODOToken.sol +++ b/contracts/DODOToken/vDODOToken.sol @@ -30,9 +30,9 @@ contract vDODOToken is InitializableOwnable { // ============ Storage(ERC20) ============ - string public name; - string public symbol; - uint8 public decimals; + string public name = "vDODO Token"; + string public symbol = "vDODO"; + uint8 public decimals = 18; uint256 public totalSupply; mapping(address => mapping(address => uint256)) internal _ALLOWED_; @@ -91,18 +91,11 @@ contract vDODOToken is InitializableOwnable { constructor( address dodoGov, address dodoToken, - address dodoCirculationHelper, - address dodoApproveProxy, - string memory _name, - string memory _symbol + address dodoApproveProxy ) public { - name = _name; - symbol = _symbol; - decimals = 18; - _DODO_APPROVE_PROXY_ = dodoApproveProxy; _DOOD_GOV_ = dodoGov; - _DODO_CIRCULATION_HELPER_ = dodoCirculationHelper; _DODO_TOKEN_ = dodoToken; + _DODO_APPROVE_PROXY_ = dodoApproveProxy; lastRewardBlock = uint128(block.number); } @@ -216,8 +209,12 @@ contract vDODOToken is InitializableOwnable { } function availableBalanceOf(address account) public view returns (uint256 balance) { - uint256 lockedBalance = IGovernance(_DOOD_GOV_).getLockedvDODO(account); - balance = balanceOf(account).sub(lockedBalance); + if(_DOOD_GOV_ == address(0)){ + balance = balanceOf(account); + }else { + uint256 lockedBalance = IGovernance(_DOOD_GOV_).getLockedvDODO(account); + balance = balanceOf(account).sub(lockedBalance); + } } function transfer(address to, uint256 amount) public returns (bool) { diff --git a/deploy-detail-periphery.txt b/deploy-detail-periphery.txt new file mode 100644 index 0000000..47e5026 --- /dev/null +++ b/deploy-detail-periphery.txt @@ -0,0 +1,6 @@ +==================================================== +network type: bsclive +Deploy time: 2021/2/4 下午4:56:38 +Deploy type: DODOBscToken +DODOBscTokenAddress: 0x67ee3Cb086F8a16f34beE3ca72FAD36F7Db929e2 +Init DODOBscTokenAddress Tx: 0xf66264c2669f904527de63fab104250275247c014bfb6f42f57441997551cef6 diff --git a/deploy-detail-v2.0.txt b/deploy-detail-v2.0.txt index 894105c..9fe6151 100644 --- a/deploy-detail-v2.0.txt +++ b/deploy-detail-v2.0.txt @@ -572,3 +572,11 @@ Init DODOProxyV2 Tx: 0xb41219ef20f0496c8c2088bf8d30a64dd3fa1ef5cdaeaa9161a6da523 DODOApproveProxy Init tx: 0x38ced5f643938891ad553b40bafe55ffc6065a15e4bbc81f4cdfbe4f3a0b9494 DODOApprove Init tx: 0x7eac3f1fa6dbe499351ea52066623980615bdc7901a84f2afa8fc67e34e4be59 DODOIncentive ChangeProxy tx: 0x6d64bae7ee09f12db0bfc18823ac8e2ca1d682184c1ed3cc157f2b39641409e3 +==================================================== +network type: bsclive +Deploy time: 2021/2/4 下午5:09:20 +DODOCalleeHelperAddress: 0xaaffAd1017D6a13E026A00121BF258C616B25f7C +==================================================== +network type: kovan +Deploy time: 2021/2/4 下午5:16:38 +DODOCalleeHelperAddress: 0x36ce1831941d35c3588759B2D084E240a094ad4A diff --git a/kovan-mock-v2.0.txt b/kovan-mock-v2.0.txt index 20adee7..7368737 100644 --- a/kovan-mock-v2.0.txt +++ b/kovan-mock-v2.0.txt @@ -442,3 +442,6 @@ Create DPP: 0xd8C30a4E866B188F16aD266dC3333BD47F34ebaE-0x43688f367eb83697c3ca5d0 Create DPP: 0xd8C30a4E866B188F16aD266dC3333BD47F34ebaE-0x156595bAF85D5C29E91d959889B022d952190A64 Pool:0x1D690066fc3F2D808555839B630a89da118B9466 Tx: 0x5e3609531f6a6918bcc2f9d91b154d78f0b15d8b229da00cda960a380fd909dd Create DPP: 0xd7f02D1b4F9495B549787808503Ecfd231C3fbDA-0x43688f367eb83697c3ca5d03c5055b6bd6f6ac4b Pool:0x7B0d1D528a08619B370eb5c920298F74465b1982 Tx: 0x1dffacc99a0ce542425eb5fd977da570dae26246abb929e2a4eb04fcdee6a994 Create DPP: 0xd7f02D1b4F9495B549787808503Ecfd231C3fbDA-0x156595bAF85D5C29E91d959889B022d952190A64 Pool:0x3997576b46e26D3fCEa7C4A76a62146AE5A903F3 Tx: 0x07dc666596b9c47522ed8dfb194cfcc9d673c0c63ec4d456d7b7485ea7eca57b +==================================================== +network type: kovan +Deploy time: 2021/2/4 下午5:17:14 diff --git a/migrations/3_deploy_v2.js b/migrations/3_deploy_v2.js index 946a977..c23cb15 100644 --- a/migrations/3_deploy_v2.js +++ b/migrations/3_deploy_v2.js @@ -164,6 +164,11 @@ module.exports = async (deployer, network, accounts) => { logger.log("network type: " + network); logger.log("Deploy time: " + new Date().toLocaleString()); + if (deploySwitch.CALLEE) { + await deployer.deploy(DODOCalleeHelper, WETHAddress); + DODOCalleeHelperAddress = DODOCalleeHelper.address; + logger.log("DODOCalleeHelperAddress: ", DODOCalleeHelperAddress); + } if (deploySwitch.ADAPTER) { logger.log("Deploy type: V2 - Adapter"); @@ -232,6 +237,9 @@ module.exports = async (deployer, network, accounts) => { await deployer.deploy(FeeRateModelTemplate); DefaultMtFeeRateAddress = FeeRateModelTemplate.address; logger.log("DefaultMtFeeRateAddress: ", DefaultMtFeeRateAddress); + const defaultMtFeeRateInstance = await FeeRateModelTemplate.at(DefaultMtFeeRateAddress); + var tx = await defaultMtFeeRateInstance.initOwner(multiSigAddress); + logger.log("Init DefaultMtFeeRateAddress Tx:", tx.tx); } if (DefaultPermissionAddress == "") { diff --git a/migrations/5_deploy_periphery.js b/migrations/5_deploy_periphery.js new file mode 100644 index 0000000..a211ebe --- /dev/null +++ b/migrations/5_deploy_periphery.js @@ -0,0 +1,103 @@ +const fs = require("fs"); +const { deploySwitch } = require('../truffle-config.js') +const file = fs.createWriteStream("../deploy-detail-periphery.txt", { 'flags': 'a' }); +let logger = new console.Console(file, file); + +const DODOBscToken = artifacts.require("DODOBscToken"); +const DODOMigrationBSC = artifacts.require("DODOMigrationBSC"); +const vDODOToken = artifacts.require("vDODOToken"); +const DODOCirculationHelper = artifacts.require("DODOCirculationHelper"); + +module.exports = async (deployer, network, accounts) => { + + let DODOTokenAddress = ""; + let DODOApproveProxyAddress = ""; + + let DODOCirculationHelperAddress = ""; + let GovernanceAddress = ""; + let vDODOTokenAddress = ""; + + if (network == "kovan") { + DODOTokenAddress = "0xfF2985D13953Cb92ecc585aA2B6A4AF8cB46068f"; + DODOApproveProxyAddress = ""; + DODOCirculationHelperAddress = ""; + vDODOTokenAddress = ""; + GovernanceAddress = "0x0000000000000000000000000000000000000000"; + //Account + multiSigAddress = accounts[0]; + } else if (network == "live") { + DODOTokenAddress = "0x43dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd"; + DODOApproveProxyAddress = " 0x335aC99bb3E51BDbF22025f092Ebc1Cf2c5cC619"; + DODOCirculationHelperAddress = ""; + vDODOTokenAddress = ""; + GovernanceAddress = "0x0000000000000000000000000000000000000000"; + //Account + multiSigAddress = "0x95C4F5b83aA70810D4f142d58e5F7242Bd891CB0"; + } else if (network == "bsclive") { + //Account + multiSigAddress = "0x4073f2b9bB95774531b9e23d206a308c614A943a"; + } else return; + + logger.log("===================================================="); + logger.log("network type: " + network); + logger.log("Deploy time: " + new Date().toLocaleString()); + + + if (deploySwitch.DODOBscToken && (network == "bsclive")) { + logger.log("Deploy type: DODOBscToken"); + await deployer.deploy(DODOBscToken); + DODOBscTokenAddress = DODOBscToken.address; + logger.log("DODOBscTokenAddress: ", DODOBscTokenAddress); + const dodoBscTokenInstance = await DODOBscToken.at(DODOBscTokenAddress); + var tx = await dodoBscTokenInstance.initOwner("0x9c59990ec0177d87ED7D60A56F584E6b06C639a2"); + logger.log("Init DODOBscTokenAddress Tx:", tx.tx); + } + + if (deploySwitch.BSCMigration && (network !== "bsclive")) { + logger.log("Deploy type: DODOMigrationBSC"); + await deployer.deploy(DODOMigrationBSC, DODOTokenAddress, DODOApproveProxyAddress); + DODOMigrationBSCAddress = DODOMigrationBSC.address; + logger.log("DODOMigrationBSCAddress: ", DODOMigrationBSCAddress); + const dodoMigrationBscInstance = await DODOMigrationBSC.at(DODOMigrationBSCAddress); + var tx = await dodoMigrationBscInstance.initOwner(multiSigAddress); + logger.log("Init DODOMigrationBSCAddress Tx:", tx.tx); + } + + if (deploySwitch.vDODOToken) { + logger.log("Deploy type: vDODOToken"); + + if (vDODOTokenAddress == "") { + await deployer.deploy( + vDODOToken, + GovernanceAddress, + DODOTokenAddress, + DODOApproveProxyAddress + ); + vDODOTokenAddress = vDODOToken.address; + logger.log("vDODOTokenAddress: ", vDODOTokenAddress); + const vDODOTokenInstance = await vDODOToken.at(vDODOTokenAddress); + var tx = await vDODOTokenInstance.initOwner(multiSigAddress); + logger.log("Init vDODOTokenAddress Tx:", tx.tx); + } + + if (DODOCirculationHelperAddress == "") { + await deployer.deploy(DODOCirculationHelper, vDODOTokenAddress, DODOTokenAddress ); + DODOCirculationHelperAddress = DODOCirculationHelper.address; + logger.log("DODOCirculationHelperAddress: ", DODOCirculationHelperAddress); + const DODOCirculationHelperInstance = await DODOCirculationHelper.at(DODOCirculationHelperAddress); + var tx = await DODOCirculationHelperInstance.initOwner(multiSigAddress); + logger.log("Init DODOCirculationHelperAddress Tx:", tx.tx); + } + + if(network == 'kovan') { + const vDODOTokenInstance = await vDODOToken.at(vDODOTokenAddress); + //changePerReward + var tx = await vDODOTokenInstance.changePerReward("10000000000000000000"); + logger.log("vDODOToken changeReward tx: ", tx.tx); + //updateDODOCirculationHelper + tx = await vDODOTokenInstance.updateDODOCirculationHelper(DODOCirculationHelperAddress); + logger.log("vDODOToken setDODOCirculationHelper tx: ", tx.tx); + } + } + +}; diff --git a/test/utils/VDODOContext.ts b/test/utils/VDODOContext.ts index c04775c..ccccef0 100644 --- a/test/utils/VDODOContext.ts +++ b/test/utils/VDODOContext.ts @@ -34,7 +34,7 @@ export class VDODOContext { DODOApproveProxy: Contract; DODOCirculationHelper: Contract; - Governance: Contract; + // Governance: Contract; lastRewardBlock: number; alpha: number; @@ -66,21 +66,19 @@ export class VDODOContext { [this.DODOApprove.options.address] ) - this.Governance = await contracts.newContract( - contracts.DODO_GOVERNANCE, - [ - this.DODO.options.address - ] - ) + // this.Governance = await contracts.newContract( + // contracts.DODO_GOVERNANCE, + // [ + // this.DODO.options.address + // ] + // ) this.VDODO = await contracts.newContract( contracts.VDODO_NAME, [ - this.Governance.options.address, - this.DODO.options.address, "0x0000000000000000000000000000000000000000", - this.DODOApproveProxy.options.address, - "VDODO Token", "VDODO" + this.DODO.options.address, + this.DODOApproveProxy.options.address ] ) @@ -92,13 +90,13 @@ export class VDODOContext { ] ); - await this.Governance.methods.initOwner( - this.Deployer - ).send(this.sendParam(this.Deployer)) + // await this.Governance.methods.initOwner( + // this.Deployer + // ).send(this.sendParam(this.Deployer)) - await this.Governance.methods.setVDODOAddress( - this.VDODO.options.address - ).send(this.sendParam(this.Deployer)) + // await this.Governance.methods.setVDODOAddress( + // this.VDODO.options.address + // ).send(this.sendParam(this.Deployer)) await this.DODOApprove.methods.init(this.Deployer, this.DODOApproveProxy.options.address).send(this.sendParam(this.Deployer)); await this.DODOApproveProxy.methods.init(this.Deployer, [this.VDODO.options.address]).send(this.sendParam(this.Deployer)); diff --git a/truffle-config.js b/truffle-config.js index e2ad8f4..7ac5f39 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -45,7 +45,11 @@ module.exports = { MOCK_V2_POOL: false, MOCK_V2_SWAP: false, MANUAL_ADD_POOL: false, - MOCK_TARGET_POOL: false + MOCK_TARGET_POOL: false, + BSCMigration: false, + DODOBscToken: false, + vDODOToken: false, + CALLEE: true, }, networks: {