Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
e9a3651b
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,发现更多精彩内容 >>
提交
e9a3651b
编写于
5月 22, 2018
作者:
A
arhag
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix bug in staking to another account with transfer #3309
上级
503e0c8e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
18 addition
and
14 deletion
+18
-14
contracts/eosio.system/delegate_bandwidth.cpp
contracts/eosio.system/delegate_bandwidth.cpp
+4
-4
unittests/eosio.system_tests.cpp
unittests/eosio.system_tests.cpp
+14
-10
未找到文件。
contracts/eosio.system/delegate_bandwidth.cpp
浏览文件 @
e9a3651b
...
...
@@ -73,7 +73,7 @@ namespace eosiosystem {
};
/**
* These tables are designed to be constructed in the scope of the relevant user, this
* These tables are designed to be constructed in the scope of the relevant user, this
* facilitates simpler API for per-user queries
*/
typedef
eosio
::
multi_index
<
N
(
userres
),
user_resources
>
user_resources_table
;
...
...
@@ -100,9 +100,9 @@ namespace eosiosystem {
* storage of all database records associated with this action.
*
* RAM is a scarce resource whose supply is defined by global properties max_ram_size. RAM is
* priced using the bancor algorithm such that price-per-byte with a constant reserve ratio of 100:1.
* priced using the bancor algorithm such that price-per-byte with a constant reserve ratio of 100:1.
*/
void
system_contract
::
buyram
(
account_name
payer
,
account_name
receiver
,
asset
quant
)
void
system_contract
::
buyram
(
account_name
payer
,
account_name
receiver
,
asset
quant
)
{
require_auth
(
payer
);
eosio_assert
(
quant
.
amount
>
0
,
"must purchase a positive amount"
);
...
...
@@ -316,7 +316,7 @@ namespace eosiosystem {
auto
transfer_amount
=
net_balance
+
cpu_balance
;
if
(
asset
(
0
)
<
transfer_amount
)
{
INLINE_ACTION_SENDER
(
eosio
::
token
,
transfer
)(
N
(
eosio
.
token
),
{
from
,
N
(
active
)},
INLINE_ACTION_SENDER
(
eosio
::
token
,
transfer
)(
N
(
eosio
.
token
),
{
source_stake_from
,
N
(
active
)},
{
source_stake_from
,
N
(
eosio
),
asset
(
transfer_amount
),
std
::
string
(
"stake bandwidth"
)
}
);
}
}
...
...
unittests/eosio.system_tests.cpp
浏览文件 @
e9a3651b
...
...
@@ -208,6 +208,10 @@ BOOST_FIXTURE_TEST_CASE( stake_unstake_with_transfer, eosio_system_tester ) try
BOOST_REQUIRE_EQUAL
(
core_from_string
(
"10.0000"
),
total
[
"net_weight"
].
as
<
asset
>
());
BOOST_REQUIRE_EQUAL
(
core_from_string
(
"10.0000"
),
total
[
"cpu_weight"
].
as
<
asset
>
());
REQUIRE_MATCHING_OBJECT
(
voter
(
"alice1111111"
,
core_from_string
(
"0.0000"
)),
get_voter_info
(
"alice1111111"
)
);
// Now alice stakes to bob with transfer flag
BOOST_REQUIRE_EQUAL
(
success
(),
stake_with_transfer
(
"alice1111111"
,
"bob111111111"
,
core_from_string
(
"100.0000"
),
core_from_string
(
"100.0000"
)
)
);
}
FC_LOG_AND_RETHROW
()
BOOST_FIXTURE_TEST_CASE
(
fail_without_auth
,
eosio_system_tester
)
try
{
...
...
@@ -2247,7 +2251,7 @@ BOOST_FIXTURE_TEST_CASE( buyname, eosio_system_tester ) try {
BOOST_REQUIRE_EQUAL
(
success
(),
bidname
(
"sam"
,
"nofail"
,
core_from_string
(
"2.0000"
)
));
// didn't increase bid by 10%
produce_block
(
fc
::
days
(
1
)
);
produce_block
();
BOOST_REQUIRE_THROW
(
create_accounts_with_resources
(
{
N
(
nofail
)
},
N
(
dan
)
),
fc
::
exception
);
// dan shoudn't be able to do this, sam won
//wlog( "verify sam can create nofail" );
create_accounts_with_resources
(
{
N
(
nofail
)
},
N
(
sam
)
);
// sam should be able to do this, he won the bid
...
...
@@ -2257,7 +2261,7 @@ BOOST_FIXTURE_TEST_CASE( buyname, eosio_system_tester ) try {
//wlog( "verify dan cannot create test.fail" );
BOOST_REQUIRE_THROW
(
create_accounts_with_resources
(
{
N
(
test
.
fail
)
},
N
(
dan
)
),
fc
::
exception
);
// dan shouldn't be able to do this
}
FC_LOG_AND_RETHROW
()
}
FC_LOG_AND_RETHROW
()
BOOST_FIXTURE_TEST_CASE
(
multiple_namebids
,
eosio_system_tester
)
try
{
...
...
@@ -2280,12 +2284,12 @@ BOOST_FIXTURE_TEST_CASE( multiple_namebids, eosio_system_tester ) try {
(
"voter"
,
"bob"
)
(
"proxy"
,
name
(
0
).
to_string
()
)
(
"producers"
,
vector
<
account_name
>
{
N
(
producer
)
}
)
)
)
);
BOOST_REQUIRE_EQUAL
(
success
(),
push_action
(
N
(
carl
),
N
(
voteproducer
),
mvo
()
(
"voter"
,
"carl"
)
(
"proxy"
,
name
(
0
).
to_string
()
)
(
"producers"
,
vector
<
account_name
>
{
N
(
producer
)
}
)
(
"producers"
,
vector
<
account_name
>
{
N
(
producer
)
}
)
)
);
...
...
@@ -2299,7 +2303,7 @@ BOOST_FIXTURE_TEST_CASE( multiple_namebids, eosio_system_tester ) try {
bidname
(
"carl"
,
"prefd"
,
core_from_string
(
"1.0000"
)
);
bidname
(
"carl"
,
"prefe"
,
core_from_string
(
"1.0000"
)
);
BOOST_REQUIRE_EQUAL
(
core_from_string
(
"9998.0000"
),
get_balance
(
"carl"
)
);
BOOST_REQUIRE_EQUAL
(
error
(
"assertion failure with message: account is already high bidder"
),
bidname
(
"bob"
,
"prefb"
,
core_from_string
(
"1.1001"
)
)
);
BOOST_REQUIRE_EQUAL
(
error
(
"assertion failure with message: must increase bid by 10%"
),
...
...
@@ -2347,7 +2351,7 @@ BOOST_FIXTURE_TEST_CASE( multiple_namebids, eosio_system_tester ) try {
(
"producers"
,
vector
<
account_name
>
{
N
(
producer
)
}
)
)
);
// need to wait for 14 days after going live
produce_blocks
(
10
);
produce_block
(
fc
::
days
(
2
)
);
...
...
@@ -2355,7 +2359,7 @@ BOOST_FIXTURE_TEST_CASE( multiple_namebids, eosio_system_tester ) try {
BOOST_REQUIRE_EXCEPTION
(
create_account_with_resources
(
N
(
prefd
),
N
(
david
)
),
fc
::
exception
,
fc_assert_exception_message_is
(
not_closed_message
)
);
// it's been 14 days, auction for prefd has been closed
produce_block
(
fc
::
days
(
12
)
);
produce_block
(
fc
::
days
(
12
)
);
create_account_with_resources
(
N
(
prefd
),
N
(
david
)
);
produce_blocks
(
2
);
produce_block
(
fc
::
hours
(
23
)
);
...
...
@@ -2381,7 +2385,7 @@ BOOST_FIXTURE_TEST_CASE( multiple_namebids, eosio_system_tester ) try {
BOOST_REQUIRE_EXCEPTION
(
create_account_with_resources
(
N
(
prefb
),
N
(
eve
)
),
fc
::
exception
,
fc_assert_exception_message_is
(
not_closed_message
)
);
// but changing a bid that is not the highest does not push closing time
BOOST_REQUIRE_EQUAL
(
success
(),
BOOST_REQUIRE_EQUAL
(
success
(),
bidname
(
"carl"
,
"prefe"
,
core_from_string
(
"2.0980"
)
)
);
produce_block
(
fc
::
hours
(
2
)
);
produce_blocks
(
2
);
...
...
@@ -2393,12 +2397,12 @@ BOOST_FIXTURE_TEST_CASE( multiple_namebids, eosio_system_tester ) try {
create_account_with_resources
(
N
(
prefb
),
N
(
eve
)
);
BOOST_REQUIRE_EXCEPTION
(
create_account_with_resources
(
N
(
prefe
),
N
(
carl
)
),
fc
::
exception
,
fc_assert_exception_message_is
(
not_closed_message
)
);
fc
::
exception
,
fc_assert_exception_message_is
(
not_closed_message
)
);
produce_block
();
produce_block
(
fc
::
hours
(
24
)
);
// by now bid for prefe has closed
create_account_with_resources
(
N
(
prefe
),
N
(
carl
)
);
// prefe can now create *.prefe
// prefe can now create *.prefe
BOOST_REQUIRE_EXCEPTION
(
create_account_with_resources
(
N
(
xyz
.
prefe
),
N
(
carl
)
),
fc
::
exception
,
fc_assert_exception_message_is
(
"only suffix may create this account"
)
);
transfer
(
config
::
system_account_name
,
N
(
prefe
),
core_from_string
(
"10000.0000"
)
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录