From d71bc4ac9b0fa56d04e1f80c9d0b22166ee835c1 Mon Sep 17 00:00:00 2001 From: wangxxzhiyy Date: Sun, 15 Dec 2019 16:18:16 +0800 Subject: [PATCH] update contracts --- contracts/hdddeposit/hdddeposit.cpp | 2 +- contracts/hddpool/hddpool.cpp | 9 ++++++++- contracts/hddpool/hddpool.hpp | 24 ++++++++++++++++++++---- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/contracts/hdddeposit/hdddeposit.cpp b/contracts/hdddeposit/hdddeposit.cpp index d4faacd1e..9bcca8878 100644 --- a/contracts/hdddeposit/hdddeposit.cpp +++ b/contracts/hdddeposit/hdddeposit.cpp @@ -274,7 +274,7 @@ void hdddeposit::mchgdepacc(uint64_t minerid, name new_depacc) { eosio_assert( acc_new.deposit_free.amount >= miner.dep_total.amount, "new deposit user free deposit not enough" ); - eosio_assert(hddpool::get_miner_pool(minerid) == new_depacc, "minerid not exist in new_depacc's storepool "); + eosio_assert(hddpool::get_miner_pool_owner(minerid) == new_depacc, "minerid not exist in new_depacc's storepool "); //变更原抵押账户的押金数量 diff --git a/contracts/hddpool/hddpool.cpp b/contracts/hddpool/hddpool.cpp index b8b4fe361..9c0ccb9e1 100644 --- a/contracts/hddpool/hddpool.cpp +++ b/contracts/hddpool/hddpool.cpp @@ -732,7 +732,7 @@ void hddpool::mchgstrpool(uint64_t minerid, name new_poolid) auto itstorepool = _storepool.find(new_poolid.value); eosio_assert(itstorepool != _storepool.end(), "storepool not registered"); - //require_auth(itminerinfo->admin); + require_auth(itminerinfo->admin); require_auth(itstorepool->pool_owner); //归还旧矿池空间 @@ -773,6 +773,9 @@ void hddpool::mchgspace(uint64_t minerid, uint64_t max_space) require_auth(itminerinfo->admin); + name pool_owner = get_miner_pool_owner(minerid); + require_auth(pool_owner); + //--- check miner deposit and max_space asset deposit = hdddeposit(hdd_deposit).get_miner_deposit(minerid); eosio_assert(hdddeposit(hdd_deposit).is_deposit_enough(deposit, max_space),"deposit not enough for miner's max_space -- addm2pool"); @@ -837,6 +840,10 @@ void hddpool::mchgowneracc(uint64_t minerid, name new_owneracc) eosio_assert(itmaccount_old != _maccount_old.end(), "minerid not register"); uint64_t space = itmaccount_old->space; + name pool_owner = get_miner_pool_owner(minerid); + require_auth(pool_owner); + + uint64_t tmp_t = current_time(); //结算旧owner账户当前的收益 diff --git a/contracts/hddpool/hddpool.hpp b/contracts/hddpool/hddpool.hpp index e2753c57b..98d9ceddd 100644 --- a/contracts/hddpool/hddpool.hpp +++ b/contracts/hddpool/hddpool.hpp @@ -215,15 +215,31 @@ public: return 0; } - static name get_miner_pool(uint64_t minerid) + static name get_miner_pool_id(uint64_t minerid) { - name pool; + name pool_id; minerinfo_table _minerinfo( N(hddpool12345) , N(hddpool12345) ); auto itminerinfo = _minerinfo.find(minerid); if(itminerinfo != _minerinfo.end()) { - pool = itminerinfo->owner; + pool_id = itminerinfo->pool_id; } - return pool; + return pool_id; + } + + static name get_miner_pool_owner(uint64_t minerid) + { + name pool_owner; + minerinfo_table _minerinfo( N(hddpool12345) , N(hddpool12345) ); + auto itminerinfo = _minerinfo.find(minerid); + if(itminerinfo != _minerinfo.end()) { + storepool_index _storepool( N(hddpool12345) , N(hddpool12345)); + auto itstorepool = _storepool.find(itminerinfo->pool_id); + if(itstorepool != _storepool.end()) { + pool_owner = itstorepool->pool_owner; + } + + } + return pool_owner; } }; -- GitLab