Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
269f8120
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,发现更多精彩内容 >>
提交
269f8120
编写于
6月 21, 2019
作者:
W
Wang Zhi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
new BP election algorithm -- ongoing
上级
56ea4cec
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
29 addition
and
5 deletion
+29
-5
contracts/eosio.system/eosio.system.abi
contracts/eosio.system/eosio.system.abi
+1
-0
contracts/eosio.system/eosio.system.hpp
contracts/eosio.system/eosio.system.hpp
+2
-2
contracts/eosio.system/voting.cpp
contracts/eosio.system/voting.cpp
+26
-3
未找到文件。
contracts/eosio.system/eosio.system.abi
浏览文件 @
269f8120
...
...
@@ -303,6 +303,7 @@
"base": "",
"fields": [
{"name":"seq_num", "type":"uint16"},
{"name":"is_org", "type":"bool"},
{"name":"prods_l1", "type":"prod_meta"},
{"name":"prods_l2", "type":"prod_meta[]"},
{"name":"prods_l3", "type":"prod_meta[]"},
...
...
contracts/eosio.system/eosio.system.hpp
浏览文件 @
269f8120
...
...
@@ -112,7 +112,7 @@ namespace eosiosystem {
struct
producers_seq
{
uint16_t
seq_num
=
1
;
// from 1 to 21
bool
is_org
=
true
;
bool
is_org
=
false
;
prod_meta
prods_l1
;
// only one
std
::
vector
<
prod_meta
>
prods_l2
;
//max 5
std
::
vector
<
prod_meta
>
prods_l3
;
...
...
@@ -120,7 +120,7 @@ namespace eosiosystem {
uint64_t
primary_key
()
const
{
return
seq_num
;
}
EOSLIB_SERIALIZE
(
producers_seq
,
(
seq_num
)(
prods_l1
)(
prods_l2
)(
prods_l3
)(
prods_all
)
)
EOSLIB_SERIALIZE
(
producers_seq
,
(
seq_num
)(
is_org
)(
prods_l1
)(
prods_l2
)(
prods_l3
)(
prods_all
)
)
};
//##YTA-Change end:
...
...
contracts/eosio.system/voting.cpp
浏览文件 @
269f8120
...
...
@@ -123,6 +123,7 @@ namespace eosiosystem {
info
.
prods_l1
.
all_stake
=
0
;
info
.
prods_l1
.
total_votes
=
0
;
info
.
prods_l1
.
is_active
=
false
;
info
.
is_org
=
false
;
}
for
(
auto
it2
=
info
.
prods_l2
.
begin
();
it2
!=
info
.
prods_l2
.
end
();
it2
++
)
{
...
...
@@ -155,13 +156,15 @@ namespace eosiosystem {
const
auto
&
prod
=
_producers
.
get
(
producer
,
"producer not found"
);
prodm
.
owner
=
producer
;
prodm
.
producer_key
=
prod
.
producer_key
;
prodm
.
all_stake
=
0
;
prodm
.
all_stake
=
(
int64_t
)
prod
.
total_votes
;
prodm
.
total_votes
=
prod
.
total_votes
;
prodm
.
is_active
=
prod
.
is_active
;
auto
ps_itr
=
_prodseq
.
find
(
seq
);
if
(
ps_itr
==
_prodseq
.
end
()
)
{
_prodseq
.
emplace
(
_self
,
[
&
](
auto
&
row
)
{
row
.
seq_num
=
seq
;
if
(
level
==
1
)
row
.
is_org
=
true
;
row
.
prods_all
.
push_back
(
prodm
);
if
(
level
==
1
)
{
row
.
prods_l1
=
prodm
;
...
...
@@ -173,6 +176,8 @@ namespace eosiosystem {
});
}
else
{
_prodseq
.
modify
(
ps_itr
,
_self
,
[
&
](
auto
&
row
)
{
if
(
level
==
1
)
row
.
is_org
=
true
;
row
.
prods_all
.
push_back
(
prodm
);
if
(
level
==
1
)
{
row
.
prods_l1
=
prodm
;
...
...
@@ -242,12 +247,14 @@ namespace eosiosystem {
_prodseq
.
modify
(
ps_itr
,
_self
,
[
&
](
producers_seq
&
info
){
if
(
info
.
prods_l1
.
owner
==
owner
)
{
info
.
prods_l1
.
total_votes
=
total_votes
;
info
.
prods_l1
.
all_stake
=
(
int64_t
)
total_votes
;
//return;
}
for
(
auto
it
=
info
.
prods_l2
.
begin
();
it
!=
info
.
prods_l2
.
end
();
it
++
)
{
if
(
it
->
owner
==
owner
)
{
it
->
total_votes
=
total_votes
;
it
->
all_stake
=
(
int64_t
)
total_votes
;
break
;
}
}
...
...
@@ -255,6 +262,7 @@ namespace eosiosystem {
for
(
auto
it
=
info
.
prods_l3
.
begin
();
it
!=
info
.
prods_l3
.
end
();
it
++
)
{
if
(
it
->
owner
==
owner
)
{
it
->
total_votes
=
total_votes
;
it
->
all_stake
=
(
int64_t
)
total_votes
;
break
;
}
}
...
...
@@ -262,6 +270,7 @@ namespace eosiosystem {
for
(
auto
it
=
info
.
prods_all
.
begin
();
it
!=
info
.
prods_all
.
end
();
it
++
)
{
if
(
it
->
owner
==
owner
)
{
it
->
total_votes
=
total_votes
;
it
->
all_stake
=
(
int64_t
)
total_votes
;
break
;
}
}
...
...
@@ -368,6 +377,19 @@ namespace eosiosystem {
if
(
ps_itr
->
prods_all
.
begin
()
==
ps_itr
->
prods_all
.
end
()
)
return
std
::
pair
<
eosio
::
producer_key
,
uint16_t
>
({{
0
,
eosio
::
public_key
{}},
0
});
if
(
ps_itr
->
is_org
)
{
print
(
"getProducerForSeq use org------------------------------"
,
seq_num
,
"
\n
"
);
if
(
ps_itr
->
prods_l1
.
is_active
&&
ps_itr
->
prods_l1
.
all_stake
>
50000000000
)
{
print
(
"getProducerForSeq org producer------------------------------"
,
seq_num
,
"
\n
"
);
return
std
::
pair
<
eosio
::
producer_key
,
uint16_t
>
({{
ps_itr
->
prods_l1
.
owner
,
ps_itr
->
prods_l1
.
producer_key
},
ps_itr
->
prods_l1
.
location
});
}
else
{
_prodseq
.
modify
(
ps_itr
,
_self
,
[
&
](
auto
&
row
)
{
row
.
is_org
=
false
;
});
}
}
double
total_votes
=
0
;
bool
is_find
=
false
;
...
...
@@ -423,8 +445,9 @@ namespace eosiosystem {
double
stake2vote
(
int64_t
staked
)
{
/// TODO subtract 2080 brings the large numbers closer to this decade
double
weight
=
int64_t
(
(
now
()
-
(
block_timestamp
::
block_timestamp_epoch
/
1000
))
/
(
seconds_per_day
*
7
)
)
/
double
(
52
);
return
double
(
staked
)
*
std
::
pow
(
2
,
weight
);
//double weight = int64_t( (now() - (block_timestamp::block_timestamp_epoch / 1000)) / (seconds_per_day * 7) ) / double( 52 );
//return double(staked) * std::pow( 2, weight );
return
double
(
staked
);
}
/**
* @pre producers must be sorted from lowest to highest and must be registered and active
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录