Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
74a52daa
Y
YTBP
项目概览
YottaChain
/
YTBP
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
YTBP
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
74a52daa
编写于
6月 27, 2019
作者:
W
Wang Zhi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update hddpool for userid unified issue
上级
1ea8802f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
101 addition
and
16 deletion
+101
-16
contracts/hddpool/hddpool.abi
contracts/hddpool/hddpool.abi
+37
-0
contracts/hddpool/hddpool.cpp
contracts/hddpool/hddpool.cpp
+43
-5
contracts/hddpool/hddpool.hpp
contracts/hddpool/hddpool.hpp
+21
-11
未找到文件。
contracts/hddpool/hddpool.abi
浏览文件 @
74a52daa
...
...
@@ -17,6 +17,10 @@
{
"name": "caller",
"type": "name"
},
{
"name": "userid",
"type": "uint64"
}
]
},
...
...
@@ -352,6 +356,10 @@
{
"name": "caller",
"type": "name"
},
{
"name": "userid",
"type": "uint64"
}
]
},
...
...
@@ -402,6 +410,10 @@
{
"name": "balance",
"type": "int64"
},
{
"name": "userid",
"type": "uint64"
}
]
},
...
...
@@ -420,6 +432,10 @@
{
"name": "caller",
"type": "name"
},
{
"name": "userid",
"type": "uint64"
}
]
},
...
...
@@ -452,6 +468,20 @@
"type": "uint64"
}
]
},
{
"name": "userhdd2",
"base": "",
"fields": [
{
"name": "account_name",
"type": "name"
},
{
"name": "userid",
"type": "uint64"
}
]
}
],
"actions": [
...
...
@@ -599,6 +629,13 @@
"index_type": "i64",
"key_names": [],
"key_types": []
},
{
"name": "userhdd2",
"type": "userhdd2",
"index_type": "i64",
"key_names": [],
"key_types": []
}
],
"ricardian_clauses": [],
...
...
contracts/hddpool/hddpool.cpp
浏览文件 @
74a52daa
...
...
@@ -121,6 +121,9 @@ void hddpool::getbalance(name user, uint8_t acc_type, name caller)
}
else
{
require_auth
(
_self
);
}
eosio_assert
(
is_account
(
user
),
"user not a account."
);
//require_auth2(user.value, N(custom));
//userhdd_index _userhdd(_self, _self);
...
...
@@ -300,7 +303,7 @@ void hddpool::sellhdd(name user, int64_t amount)
}
void
hddpool
::
sethfee
(
name
user
,
int64_t
fee
,
name
caller
)
void
hddpool
::
sethfee
(
name
user
,
int64_t
fee
,
name
caller
,
uint64_t
userid
)
{
eosio_assert
(
is_account
(
user
),
"user invalidate"
);
eosio_assert
(
is_account
(
caller
),
"caller not an account."
);
...
...
@@ -312,6 +315,9 @@ void hddpool::sethfee(name user, int64_t fee, name caller)
auto
it
=
_userhdd
.
find
(
user
.
value
);
eosio_assert
(
it
!=
_userhdd
.
end
(),
"user not exists in userhdd table"
);
eosio_assert
(
fee
!=
it
->
hdd_per_cycle_fee
,
" the fee is the same
\n
"
);
check_userid
(
user
.
value
,
userid
);
//每周期费用 <= (占用存储空间*数据分片大小/1GB)*(记账周期/ 1年)
//bool istrue = fee <= (int64_t)(((double)(it->hdd_space * data_slice_size)/(double)one_gb) * ((double)fee_cycle/(double)seconds_in_one_year));
//eosio_assert(istrue , "the fee verification is not right \n");
...
...
@@ -332,16 +338,19 @@ void hddpool::sethfee(name user, int64_t fee, name caller)
}
void
hddpool
::
subbalance
(
name
user
,
int64_t
balance
)
void
hddpool
::
subbalance
(
name
user
,
int64_t
balance
,
uint64_t
userid
)
{
require_auth
(
user
);
eosio_assert
(
is_account
(
user
),
"user invalidate"
);
//userhdd_index _userhdd(_self, _self);
userhdd_index
_userhdd
(
_self
,
user
.
value
);
auto
it
=
_userhdd
.
find
(
user
.
value
);
eosio_assert
(
it
!=
_userhdd
.
end
(),
"user not exists in userhdd table"
);
check_userid
(
user
.
value
,
userid
);
_userhdd
.
modify
(
it
,
_self
,
[
&
](
auto
&
row
)
{
row
.
hdd_balance
-=
balance
;
});
...
...
@@ -349,7 +358,7 @@ void hddpool::subbalance(name user, int64_t balance)
update_total_hdd_balance
(
-
balance
);
}
void
hddpool
::
addhspace
(
name
user
,
uint64_t
space
,
name
caller
)
void
hddpool
::
addhspace
(
name
user
,
uint64_t
space
,
name
caller
,
uint64_t
userid
)
{
eosio_assert
(
is_account
(
user
),
"user invalidate"
);
eosio_assert
(
is_account
(
caller
),
"caller not an account."
);
...
...
@@ -361,13 +370,15 @@ void hddpool::addhspace(name user, uint64_t space, name caller)
auto
it
=
_userhdd
.
find
(
user
.
value
);
eosio_assert
(
it
!=
_userhdd
.
end
(),
"user not exists in userhdd table"
);
check_userid
(
user
.
value
,
userid
);
_userhdd
.
modify
(
it
,
_self
,
[
&
](
auto
&
row
)
{
row
.
hdd_space
+=
space
;
});
}
void
hddpool
::
subhspace
(
name
user
,
uint64_t
space
,
name
caller
)
void
hddpool
::
subhspace
(
name
user
,
uint64_t
space
,
name
caller
,
uint64_t
userid
)
{
eosio_assert
(
is_account
(
user
),
"user invalidate"
);
eosio_assert
(
is_account
(
caller
),
"caller not an account."
);
...
...
@@ -379,6 +390,8 @@ void hddpool::subhspace(name user, uint64_t space, name caller)
auto
it
=
_userhdd
.
find
(
user
.
value
);
eosio_assert
(
it
!=
_userhdd
.
end
(),
"user not exists in userhdd table"
);
check_userid
(
user
.
value
,
userid
);
_userhdd
.
modify
(
it
,
_self
,
[
&
](
auto
&
row
)
{
row
.
hdd_space
-=
space
;
});
...
...
@@ -539,6 +552,15 @@ void hddpool::calcmbalance(name owner, uint64_t minerid)
void
hddpool
::
clearall
(
name
owner
)
{
require_auth
(
_self
);
minerinfo_table
_minerinfo
(
_self
,
_self
);
auto
itminerinfo
=
_minerinfo
.
find
(
863
);
_minerinfo
.
modify
(
itminerinfo
,
_self
,
[
&
](
auto
&
row
)
{
row
.
space_left
=
50
;
});
/*
maccount_index _maccount(_self, owner.value);
...
...
@@ -705,6 +727,8 @@ void hddpool::addm2pool(uint64_t minerid, name pool_id, name minerowner, uint64_
_minerinfo
.
modify
(
itminerinfo
,
_self
,
[
&
](
auto
&
row
)
{
row
.
pool_id
=
pool_id
;
row
.
owner
=
minerowner
;
row
.
max_space
=
max_space
;
row
.
space_left
=
max_space
;
});
_storepool
.
modify
(
itstorepool
,
_self
,
[
&
](
auto
&
row
)
{
...
...
@@ -744,8 +768,22 @@ void hddpool::addm2pool(uint64_t minerid, name pool_id, name minerowner, uint64_
_gstate2
.
hdd_total_user
+=
1
;
});
}
}
bool
hddpool
::
check_userid
(
uint64_t
namevalue
,
uint64_t
userid
)
{
userhdd2_index
_userhdd2
(
_self
,
_self
);
auto
it
=
_userhdd2
.
find
(
namevalue
);
if
(
it
!=
_userhdd2
.
end
())
{
if
(
it
->
userid
!=
userid
)
return
false
;
}
else
{
_userhdd2
.
emplace
(
_self
,
[
&
](
auto
&
row
)
{
row
.
account_name
=
name
{
namevalue
};
row
.
userid
=
userid
;
});
}
return
true
;
}
bool
hddpool
::
is_bp_account
(
uint64_t
uservalue
)
...
...
contracts/hddpool/hddpool.hpp
浏览文件 @
74a52daa
...
...
@@ -59,10 +59,10 @@ public:
void
buyhdd
(
name
from
,
name
receiver
,
asset
quant
);
//void buyhdd( name user , int64_t amount);
void
sellhdd
(
name
user
,
int64_t
amount
);
void
sethfee
(
name
user
,
int64_t
fee
,
name
caller
);
void
subbalance
(
name
user
,
int64_t
balance
);
void
addhspace
(
name
user
,
uint64_t
space
,
name
caller
);
void
subhspace
(
name
user
,
uint64_t
space
,
name
caller
);
void
sethfee
(
name
user
,
int64_t
fee
,
name
caller
,
uint64_t
userid
);
void
subbalance
(
name
user
,
int64_t
balance
,
uint64_t
userid
);
void
addhspace
(
name
user
,
uint64_t
space
,
name
caller
,
uint64_t
userid
);
void
subhspace
(
name
user
,
uint64_t
space
,
name
caller
,
uint64_t
userid
);
//void newmaccount(name owner, uint64_t minerid, name caller);
void
addmprofit
(
name
owner
,
uint64_t
minerid
,
uint64_t
space
,
name
caller
);
void
clearall
(
name
owner
);
...
...
@@ -81,16 +81,24 @@ public:
private:
struct
userhdd
{
name
account_name
;
//账户名
int64_t
hdd_balance
;
//余额
int64_t
hdd_per_cycle_fee
;
//每周期费用
int64_t
hdd_per_cycle_profit
;
//每周期收益
uint64_t
hdd_space
;
//占用存储空间
uint64_t
last_hdd_time
;
//上次余额计算时间 microseconds from 1970
uint64_t
primary_key
()
const
{
return
account_name
.
value
;
}
name
account_name
;
//账户名
int64_t
hdd_balance
;
//余额
int64_t
hdd_per_cycle_fee
;
//每周期费用
int64_t
hdd_per_cycle_profit
;
//每周期收益
uint64_t
hdd_space
;
//占用存储空间
uint64_t
last_hdd_time
;
//上次余额计算时间 microseconds from 1970
uint64_t
primary_key
()
const
{
return
account_name
.
value
;
}
};
typedef
multi_index
<
N
(
userhdd
),
userhdd
>
userhdd_index
;
struct
userhdd2
{
name
account_name
;
//账户名
uint64_t
userid
;
//用户id
uint64_t
primary_key
()
const
{
return
account_name
.
value
;
}
};
typedef
multi_index
<
N
(
userhdd2
),
userhdd2
>
userhdd2_index
;
struct
maccount
{
uint64_t
minerid
;
//矿机id
...
...
@@ -178,6 +186,8 @@ private:
bool
is_bp_account
(
uint64_t
uservalue
);
bool
check_userid
(
uint64_t
namevalue
,
uint64_t
userid
);
bool
calculate_balance
(
int64_t
oldbalance
,
int64_t
hdd_per_cycle_fee
,
int64_t
hdd_per_cycle_profit
,
uint64_t
last_hdd_time
,
uint64_t
current_time
,
int64_t
&
new_balance
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录