Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
e2280ac0
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,发现更多精彩内容 >>
提交
e2280ac0
编写于
6月 27, 2019
作者:
W
Wang Zhi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update system contract -- miscellaneous
上级
74a52daa
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
55 addition
and
30 deletion
+55
-30
contracts/eosio.system/eosio.system.abi
contracts/eosio.system/eosio.system.abi
+1
-1
contracts/eosio.system/eosio.system.cpp
contracts/eosio.system/eosio.system.cpp
+1
-1
contracts/eosio.system/eosio.system.hpp
contracts/eosio.system/eosio.system.hpp
+2
-2
contracts/eosio.system/producer_pay.cpp
contracts/eosio.system/producer_pay.cpp
+5
-1
contracts/eosio.system/voting.cpp
contracts/eosio.system/voting.cpp
+46
-25
未找到文件。
contracts/eosio.system/eosio.system.abi
浏览文件 @
e2280ac0
...
...
@@ -608,7 +608,7 @@
"key_names" : ["owner"],
"key_types" : ["uint64"]
},{
"name": "producers
2
",
"name": "producers
ext
",
"type": "producer_info_ext",
"index_type": "i64",
"key_names" : ["owner"],
...
...
contracts/eosio.system/eosio.system.cpp
浏览文件 @
e2280ac0
...
...
@@ -13,7 +13,7 @@ namespace eosiosystem {
:
native
(
s
),
_voters
(
_self
,
_self
),
_producers
(
_self
,
_self
),
_producers
2
(
_self
,
_self
),
_producers
ext
(
_self
,
_self
),
_global
(
_self
,
_self
),
_rammarket
(
_self
,
_self
)
{
...
...
contracts/eosio.system/eosio.system.hpp
浏览文件 @
e2280ac0
...
...
@@ -168,7 +168,7 @@ namespace eosiosystem {
>
producers_table
;
//##YTA-Change start:
typedef
eosio
::
multi_index
<
N
(
producers
2
),
producer_info_ext
>
producers_ext_table
;
typedef
eosio
::
multi_index
<
N
(
producers
ext
),
producer_info_ext
>
producers_ext_table
;
typedef
eosio
::
multi_index
<
N
(
producerseq
),
producers_seq
>
producers_seq_table
;
//##YTA-Change end:
...
...
@@ -188,7 +188,7 @@ namespace eosiosystem {
voters_table
_voters
;
producers_table
_producers
;
//##YTA-Change start:
producers_ext_table
_producers
2
;
producers_ext_table
_producers
ext
;
//##YTA-Change end:
global_state_singleton
_global
;
...
...
contracts/eosio.system/producer_pay.cpp
浏览文件 @
e2280ac0
...
...
@@ -8,7 +8,7 @@ namespace eosiosystem {
//##YTA-Change start:
//Change total vote rate from 15% to 1% for test network
//const int64_t min_activated_stake = 150'000'000'0000;
const
int64_t
min_activated_stake
=
0
;
const
int64_t
min_activated_stake
=
150'000'000
0
;
//##YTA-Change end:
const
uint32_t
blocks_per_year
=
52
*
7
*
24
*
2
*
3600
;
// half seconds per year
const
uint32_t
seconds_per_year
=
52
*
7
*
24
*
3600
;
...
...
@@ -70,6 +70,10 @@ namespace eosiosystem {
/// update block producers once every two minute due to election strategy is more complex than before
if
(
timestamp
.
slot
-
_gstate
.
last_producer_schedule_update
.
slot
>
240
)
{
//##YTA-Change end:
print
(
"update_elected_producers -------------------------------------
\n
"
);
print
(
"--------------------------------------------------------------
\n
"
);
print
(
"--------------------------------------------------------------
\n
"
);
print
(
"--------------------------------------------------------------
\n
"
);
update_elected_producers
(
timestamp
);
//update_elected_producers_yta( timestamp );
...
...
contracts/eosio.system/voting.cpp
浏览文件 @
e2280ac0
...
...
@@ -37,6 +37,7 @@ namespace eosiosystem {
void
system_contract
::
regproducer
(
const
account_name
producer
,
const
eosio
::
public_key
&
producer_key
,
const
std
::
string
&
url
,
uint16_t
location
)
{
eosio_assert
(
url
.
size
()
<
512
,
"url too long"
);
eosio_assert
(
producer_key
!=
eosio
::
public_key
(),
"public key should not be the default value"
);
/*
require_auth( producer );
auto prod = _producers.find( producer );
...
...
@@ -60,6 +61,32 @@ namespace eosiosystem {
info.location = location;
});
}
*/
require_auth
(
_self
);
auto
prod
=
_producers
.
find
(
producer
);
if
(
prod
!=
_producers
.
end
()
)
{
_producers
.
modify
(
prod
,
_self
,
[
&
](
producer_info
&
info
){
info
.
producer_key
=
producer_key
;
info
.
is_active
=
true
;
info
.
url
=
url
;
info
.
location
=
location
;
});
change_producer_seq_info
(
producer
,
producer_key
,
true
,
true
,
url
);
}
else
{
_producers
.
emplace
(
_self
,
[
&
](
producer_info
&
info
){
info
.
owner
=
producer
;
info
.
total_votes
=
0
;
info
.
producer_key
=
producer_key
;
info
.
is_active
=
true
;
info
.
url
=
url
;
info
.
location
=
location
;
});
}
}
void
system_contract
::
unregprod
(
const
account_name
producer
)
{
...
...
@@ -77,8 +104,8 @@ namespace eosiosystem {
void
system_contract
::
clsprods2
()
{
require_auth
(
_self
);
while
(
_producers
2
.
begin
()
!=
_producers2
.
end
())
_producers
2
.
erase
(
_producers2
.
begin
());
while
(
_producers
ext
.
begin
()
!=
_producersext
.
end
())
_producers
ext
.
erase
(
_producersext
.
begin
());
for
(
uint16_t
seq
=
1
;
seq
<=
21
;
seq
++
)
{
producers_seq_table
_prod_seq
(
_self
,
seq
);
...
...
@@ -98,16 +125,16 @@ namespace eosiosystem {
eosio_assert
(
level
>=
1
&&
level
<=
3
,
"invalidate level number"
);
//const auto& prod = _producers.get( producer, "producer not found" );
auto
it
=
_producers
2
.
find
(
producer
);
if
(
it
==
_producers
2
.
end
())
{
_producers
2
.
emplace
(
_self
,
[
&
](
auto
&
row
)
{
auto
it
=
_producers
ext
.
find
(
producer
);
if
(
it
==
_producers
ext
.
end
())
{
_producers
ext
.
emplace
(
_self
,
[
&
](
auto
&
row
)
{
row
.
owner
=
producer
;
row
.
seq_num
=
seq
;
});
add_producer_seq
(
producer
,
seq
,
level
);
}
else
{
uint16_t
old_seq
=
it
->
seq_num
;
_producers
2
.
modify
(
it
,
_self
,
[
&
](
auto
&
row
)
{
_producers
ext
.
modify
(
it
,
_self
,
[
&
](
auto
&
row
)
{
row
.
seq_num
=
seq
;
});
rm_producer_seq
(
producer
,
old_seq
);
...
...
@@ -198,9 +225,9 @@ namespace eosiosystem {
}
void
system_contract
::
change_producer_seq_info
(
const
account_name
producer
,
const
eosio
::
public_key
&
producer_key
,
bool
isactive
,
bool
seturl
,
const
std
::
string
&
url
)
{
auto
it
=
_producers
2
.
find
(
producer
);
auto
it
=
_producers
ext
.
find
(
producer
);
if
(
it
==
_producers
2
.
end
())
if
(
it
==
_producers
ext
.
end
())
return
;
uint16_t
seq
=
it
->
seq_num
;
...
...
@@ -346,11 +373,11 @@ namespace eosiosystem {
_producers
.
modify
(
prod
,
0
,
[
&
](
producer_info
&
info
){
int64_t
vote_delta
=
0
;
auto
pitr2
=
_producers
2
.
find
(
producer
);
if
(
pitr2
!=
_producers
2
.
end
()
)
{
auto
pitr2
=
_producers
ext
.
find
(
producer
);
if
(
pitr2
!=
_producers
ext
.
end
()
)
{
vote_delta
=
tickets
-
pitr2
->
out_votes
;
info
.
total_votes
+=
vote_delta
;
_producers
2
.
modify
(
pitr2
,
0
,
[
&
](
producer_info_ext
&
info2
){
_producers
ext
.
modify
(
pitr2
,
0
,
[
&
](
producer_info_ext
&
info2
){
info2
.
out_votes
=
tickets
;
});
update_producers_seq_totalvotes
(
pitr2
->
seq_num
,
producer
,
info
.
total_votes
);
...
...
@@ -362,13 +389,6 @@ namespace eosiosystem {
void
system_contract
::
update_elected_producers_yta
(
block_timestamp
block_time
)
{
_gstate
.
last_producer_schedule_update
=
block_time
;
print
(
"update_elected_producers_yta start------------------------------
\n
"
);
print
(
"-----------------------------------------------
\n
"
);
print
(
"-----------------------------------------------
\n
"
);
print
(
"-----------------------------------------------
\n
"
);
print
(
"-----------------------------------------------
\n
"
);
print
(
"-----------------------------------------------
\n
"
);
print
(
"-----------------------------------------------
\n
"
);
std
::
vector
<
std
::
pair
<
eosio
::
producer_key
,
uint16_t
>
>
top_producers
;
top_producers
.
reserve
(
21
);
...
...
@@ -396,13 +416,10 @@ namespace eosiosystem {
bytes
packed_schedule
=
pack
(
producers
);
print
(
"set_proposed_producers start------------------------
\n
"
);
if
(
set_proposed_producers
(
packed_schedule
.
data
(),
packed_schedule
.
size
()
)
>=
0
)
{
_gstate
.
last_producer_schedule_size
=
static_cast
<
decltype
(
_gstate
.
last_producer_schedule_size
)
>
(
top_producers
.
size
()
);
print
(
"set_proposed_producers succes-----------------------
\n
"
);
}
print
(
"update_elected_producers_yta end------------------------------
\n
"
);
}
...
...
@@ -416,10 +433,8 @@ namespace eosiosystem {
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.total_votes > 50000000000) {
if
(
ps_itr
->
prods_l1
.
is_active
&&
ps_itr
->
prods_l1
.
total_votes
>
0
)
{
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
)
{
...
...
@@ -460,6 +475,9 @@ namespace eosiosystem {
top_producers
.
emplace_back
(
std
::
pair
<
eosio
::
producer_key
,
uint16_t
>
({{
it
->
owner
,
it
->
producer_key
},
it
->
location
})
);
}
print
(
"update_elected_producers 1 -------------------------------------
\n
"
);
print
(
"update_elected_producers top_producers.size() = "
,
top_producers
.
size
()
,
"
\n
"
);
if
(
top_producers
.
size
()
<
_gstate
.
last_producer_schedule_size
)
{
return
;
}
...
...
@@ -475,7 +493,10 @@ namespace eosiosystem {
bytes
packed_schedule
=
pack
(
producers
);
print
(
"update_elected_producers 2 -------------------------------------
\n
"
);
if
(
set_proposed_producers
(
packed_schedule
.
data
(),
packed_schedule
.
size
()
)
>=
0
)
{
print
(
"update_elected_producers 3 -------------------------------------
\n
"
);
_gstate
.
last_producer_schedule_size
=
static_cast
<
decltype
(
_gstate
.
last_producer_schedule_size
)
>
(
top_producers
.
size
()
);
}
}
...
...
@@ -601,8 +622,8 @@ namespace eosiosystem {
eosio_assert
(
!
pd
.
second
.
second
/* not from new set */
,
"producer is not registered"
);
//data corruption
}
//##YTA-Change start:
auto
pitr2
=
_producers
2
.
find
(
pd
.
first
);
if
(
pitr2
!=
_producers
2
.
end
()
)
{
auto
pitr2
=
_producers
ext
.
find
(
pd
.
first
);
if
(
pitr2
!=
_producers
ext
.
end
()
)
{
//pitr2->seq_num
update_producers_seq_totalvotes
(
pitr2
->
seq_num
,
pd
.
first
,
total_votes
);
}
else
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录