Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
4ce83e34
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,发现更多精彩内容 >>
未验证
提交
4ce83e34
编写于
4月 03, 2018
作者:
W
wanderingbort
提交者:
GitHub
4月 03, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2072 from EOSIO/fix_txn_gen
Fix txn_test_gen_plugin w.r.t. net_usage_words & txn ordering
上级
48cd1b62
c430cd13
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
83 addition
and
86 deletion
+83
-86
plugins/txn_test_gen_plugin/txn_test_gen_plugin.cpp
plugins/txn_test_gen_plugin/txn_test_gen_plugin.cpp
+83
-86
未找到文件。
plugins/txn_test_gen_plugin/txn_test_gen_plugin.cpp
浏览文件 @
4ce83e34
...
...
@@ -82,7 +82,6 @@ struct txn_test_gen_plugin_impl {
chain_controller
&
cc
=
app
().
get_plugin
<
chain_plugin
>
().
chain
();
chain
::
chain_id_type
chainid
;
app
().
get_plugin
<
chain_plugin
>
().
get_chain_id
(
chainid
);
asset
stake
(
10000
);
fc
::
crypto
::
private_key
txn_test_receiver_A_priv_key
=
fc
::
crypto
::
private_key
::
regenerate
(
fc
::
sha256
(
std
::
string
(
64
,
'a'
)));
fc
::
crypto
::
private_key
txn_test_receiver_B_priv_key
=
fc
::
crypto
::
private_key
::
regenerate
(
fc
::
sha256
(
std
::
string
(
64
,
'b'
)));
...
...
@@ -94,104 +93,100 @@ struct txn_test_gen_plugin_impl {
//create some test accounts
auto
memo
=
fc
::
variant
(
fc
::
time_point
::
now
()).
as_string
()
+
" "
+
fc
::
variant
(
fc
::
time_point
::
now
().
time_since_epoch
()).
as_string
();
signed_transaction
trx
;
trx
.
expiration
=
cc
.
head_block_time
()
+
fc
::
seconds
(
30
);
trx
.
set_reference_block
(
cc
.
head_block_id
());
//create "A" account
{
auto
owner_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_A_pub_key
,
1
}},
{}};
auto
active_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_A_pub_key
,
1
}},
{}};
auto
recovery_auth
=
eosio
::
chain
::
authority
{
1
,
{},
{{{
creator
,
"active"
},
1
}}};
trx
.
actions
.
emplace_back
(
vector
<
chain
::
permission_level
>
{{
creator
,
"active"
}},
contracts
::
newaccount
{
creator
,
newaccountA
,
owner_auth
,
active_auth
,
recovery_auth
});
}
//create "B" account
{
auto
owner_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_B_pub_key
,
1
}},
{}};
auto
active_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_B_pub_key
,
1
}},
{}};
auto
recovery_auth
=
eosio
::
chain
::
authority
{
1
,
{},
{{{
creator
,
"active"
},
1
}}};
signed_transaction
trx
;
trx
.
actions
.
emplace_back
(
vector
<
chain
::
permission_level
>
{{
creator
,
"active"
}},
contracts
::
newaccount
{
creator
,
newaccountB
,
owner_auth
,
active_auth
,
recovery_auth
});
}
//create "currency" account
{
auto
owner_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_C_pub_key
,
1
}},
{}};
auto
active_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_C_pub_key
,
1
}},
{}};
auto
recovery_auth
=
eosio
::
chain
::
authority
{
1
,
{},
{{{
creator
,
"active"
},
1
}}};
//create "A" account
{
auto
owner_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_A_pub_key
,
1
}},
{}};
auto
active_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_A_pub_key
,
1
}},
{}};
auto
recovery_auth
=
eosio
::
chain
::
authority
{
1
,
{},
{{{
creator
,
"active"
},
1
}}};
trx
.
actions
.
emplace_back
(
vector
<
chain
::
permission_level
>
{{
creator
,
"active"
}},
contracts
::
newaccount
{
creator
,
newaccountC
,
owner_auth
,
active_auth
,
recovery_auth
});
}
trx
.
actions
.
emplace_back
(
vector
<
chain
::
permission_level
>
{{
creator
,
"active"
}},
contracts
::
newaccount
{
creator
,
newaccountA
,
owner_auth
,
active_auth
,
recovery_auth
});
}
//create "B" account
{
auto
owner_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_B_pub_key
,
1
}},
{}};
auto
active_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_B_pub_key
,
1
}},
{}};
auto
recovery_auth
=
eosio
::
chain
::
authority
{
1
,
{},
{{{
creator
,
"active"
},
1
}}};
trx
.
actions
.
emplace_back
(
vector
<
chain
::
permission_level
>
{{
creator
,
"active"
}},
contracts
::
newaccount
{
creator
,
newaccountB
,
owner_auth
,
active_auth
,
recovery_auth
});
}
//create "currency" account
{
auto
owner_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_C_pub_key
,
1
}},
{}};
auto
active_auth
=
eosio
::
chain
::
authority
{
1
,
{{
txn_text_receiver_C_pub_key
,
1
}},
{}};
auto
recovery_auth
=
eosio
::
chain
::
authority
{
1
,
{},
{{{
creator
,
"active"
},
1
}}};
trx
.
actions
.
emplace_back
(
vector
<
chain
::
permission_level
>
{{
creator
,
"active"
}},
contracts
::
newaccount
{
creator
,
newaccountC
,
owner_auth
,
active_auth
,
recovery_auth
});
}
trx
.
sign
(
creator_priv_key
,
chainid
);
cc
.
push_transaction
(
packed_transaction
(
trx
));
trx
.
expiration
=
cc
.
head_block_time
()
+
fc
::
seconds
(
30
);
trx
.
net_usage_words
=
500
;
trx
.
set_reference_block
(
cc
.
head_block_id
());
trx
.
sign
(
creator_priv_key
,
chainid
);
cc
.
push_transaction
(
packed_transaction
(
trx
));
}
//
create currency contrac
t
//
set currency contract & initialize i
t
{
signed_transaction
trx
;
vector
<
uint8_t
>
wasm
=
wast_to_wasm
(
std
::
string
(
currency_wast
));
signed_transaction
trx
;
contracts
::
setcode
handler
;
handler
.
account
=
newaccountC
;
handler
.
code
.
assign
(
wasm
.
begin
(),
wasm
.
end
());
vector
<
uint8_t
>
wasm
=
wast_to_wasm
(
std
::
string
(
currency_wast
));
trx
.
actions
.
emplace_back
(
vector
<
chain
::
permission_level
>
{{
newaccountC
,
"active"
}},
handler
);
contracts
::
setcode
handler
;
handler
.
account
=
newaccountC
;
handler
.
code
.
assign
(
wasm
.
begin
(),
wasm
.
end
());
{
contracts
::
setabi
handler
;
handler
.
account
=
newaccountC
;
handler
.
abi
=
currency_abi_def
;
trx
.
actions
.
emplace_back
(
vector
<
chain
::
permission_level
>
{{
newaccountC
,
"active"
}},
handler
);
}
trx
.
actions
.
emplace_back
(
vector
<
chain
::
permission_level
>
{{
newaccountC
,
"active"
}},
handler
);
trx
.
expiration
=
cc
.
head_block_time
()
+
fc
::
seconds
(
30
);
trx
.
set_reference_block
(
cc
.
head_block_id
());
trx
.
sign
(
txn_test_receiver_C_priv_key
,
chainid
);
cc
.
push_transaction
(
packed_transaction
(
trx
));
}
{
contracts
::
setabi
handler
;
handler
.
account
=
newaccountC
;
handler
.
abi
=
currency_abi_def
;
trx
.
actions
.
emplace_back
(
vector
<
chain
::
permission_level
>
{{
newaccountC
,
"active"
}},
handler
);
}
//issue & fund the two accounts with currency contract currency
{
signed_transaction
trx
;
abi_serializer
currency_serializer
(
currency_abi_def
);
abi_serializer
currency_serializer
(
currency_abi_def
);
{
action
act
;
act
.
account
=
N
(
currency
);
act
.
name
=
N
(
create
);
act
.
authorization
=
vector
<
permission_level
>
{{
newaccountC
,
config
::
active_name
}};
act
.
data
=
currency_serializer
.
variant_to_binary
(
"create"
,
fc
::
json
::
from_string
(
"{
\"
issuer
\"
:
\"
currency
\"
,
\"
maximum_supply
\"
:
\"
1000000000.0000 CUR
\"
,
\"
can_freeze
\"
:0,
\"
can_recall
\"
:0,
\"
can_whitelist
\"
:0}}"
));
trx
.
actions
.
push_back
(
act
);
}
{
action
act
;
act
.
account
=
N
(
currency
);
act
.
name
=
N
(
issue
);
act
.
authorization
=
vector
<
permission_level
>
{{
newaccountC
,
config
::
active_name
}};
act
.
data
=
currency_serializer
.
variant_to_binary
(
"issue"
,
fc
::
json
::
from_string
(
"{
\"
to
\"
:
\"
currency
\"
,
\"
quantity
\"
:
\"
600.0000 CUR
\"
,
\"
memo
\"
:
\"\"
}"
));
trx
.
actions
.
push_back
(
act
);
}
{
action
act
;
act
.
account
=
N
(
currency
);
act
.
name
=
N
(
transfer
);
act
.
authorization
=
vector
<
permission_level
>
{{
newaccountC
,
config
::
active_name
}};
act
.
data
=
currency_serializer
.
variant_to_binary
(
"transfer"
,
fc
::
json
::
from_string
(
"{
\"
from
\"
:
\"
currency
\"
,
\"
to
\"
:
\"
txn.test.a
\"
,
\"
quantity
\"
:
\"
200.0000 CUR
\"
,
\"
memo
\"
:
\"\"
}"
));
trx
.
actions
.
push_back
(
act
);
}
{
action
act
;
act
.
account
=
N
(
currency
);
act
.
name
=
N
(
transfer
);
act
.
authorization
=
vector
<
permission_level
>
{{
newaccountC
,
config
::
active_name
}};
act
.
data
=
currency_serializer
.
variant_to_binary
(
"transfer"
,
fc
::
json
::
from_string
(
"{
\"
from
\"
:
\"
currency
\"
,
\"
to
\"
:
\"
txn.test.b
\"
,
\"
quantity
\"
:
\"
200.0000 CUR
\"
,
\"
memo
\"
:
\"\"
}"
));
trx
.
actions
.
push_back
(
act
);
}
{
action
act
;
act
.
account
=
N
(
currency
);
act
.
name
=
N
(
create
);
act
.
authorization
=
vector
<
permission_level
>
{{
newaccountC
,
config
::
active_name
}};
act
.
data
=
currency_serializer
.
variant_to_binary
(
"create"
,
fc
::
json
::
from_string
(
"{
\"
issuer
\"
:
\"
currency
\"
,
\"
maximum_supply
\"
:
\"
1000000000.0000 CUR
\"
,
\"
can_freeze
\"
:0,
\"
can_recall
\"
:0,
\"
can_whitelist
\"
:0}}"
));
trx
.
actions
.
push_back
(
act
);
}
{
action
act
;
act
.
account
=
N
(
currency
);
act
.
name
=
N
(
issue
);
act
.
authorization
=
vector
<
permission_level
>
{{
newaccountC
,
config
::
active_name
}};
act
.
data
=
currency_serializer
.
variant_to_binary
(
"issue"
,
fc
::
json
::
from_string
(
"{
\"
to
\"
:
\"
currency
\"
,
\"
quantity
\"
:
\"
600.0000 CUR
\"
,
\"
memo
\"
:
\"\"
}"
));
trx
.
actions
.
push_back
(
act
);
}
{
action
act
;
act
.
account
=
N
(
currency
);
act
.
name
=
N
(
transfer
);
act
.
authorization
=
vector
<
permission_level
>
{{
newaccountC
,
config
::
active_name
}};
act
.
data
=
currency_serializer
.
variant_to_binary
(
"transfer"
,
fc
::
json
::
from_string
(
"{
\"
from
\"
:
\"
currency
\"
,
\"
to
\"
:
\"
txn.test.a
\"
,
\"
quantity
\"
:
\"
200.0000 CUR
\"
,
\"
memo
\"
:
\"\"
}"
));
trx
.
actions
.
push_back
(
act
);
}
{
action
act
;
act
.
account
=
N
(
currency
);
act
.
name
=
N
(
transfer
);
act
.
authorization
=
vector
<
permission_level
>
{{
newaccountC
,
config
::
active_name
}};
act
.
data
=
currency_serializer
.
variant_to_binary
(
"transfer"
,
fc
::
json
::
from_string
(
"{
\"
from
\"
:
\"
currency
\"
,
\"
to
\"
:
\"
txn.test.b
\"
,
\"
quantity
\"
:
\"
200.0000 CUR
\"
,
\"
memo
\"
:
\"\"
}"
));
trx
.
actions
.
push_back
(
act
);
}
trx
.
expiration
=
cc
.
head_block_time
()
+
fc
::
seconds
(
30
);
trx
.
set_reference_block
(
cc
.
head_block_id
());
trx
.
sign
(
txn_test_receiver_C_priv_key
,
chainid
);
cc
.
push_transaction
(
packed_transaction
(
trx
));
trx
.
expiration
=
cc
.
head_block_time
()
+
fc
::
seconds
(
30
);
trx
.
set_reference_block
(
cc
.
head_block_id
());
trx
.
net_usage_words
=
5000
;
trx
.
sign
(
txn_test_receiver_C_priv_key
,
chainid
);
cc
.
push_transaction
(
packed_transaction
(
trx
));
}
}
...
...
@@ -262,6 +257,7 @@ struct txn_test_gen_plugin_impl {
trx
.
context_free_actions
.
emplace_back
(
action
({},
config
::
system_account_name
,
"nonce"
,
fc
::
raw
::
pack
(
nonce
++
)));
trx
.
set_reference_block
(
cc
.
head_block_id
());
trx
.
expiration
=
cc
.
head_block_time
()
+
fc
::
seconds
(
30
);
trx
.
net_usage_words
=
100
;
trx
.
sign
(
a_priv_key
,
chainid
);
cc
.
push_transaction
(
packed_transaction
(
trx
));
}
...
...
@@ -272,6 +268,7 @@ struct txn_test_gen_plugin_impl {
trx
.
context_free_actions
.
emplace_back
(
action
({},
config
::
system_account_name
,
"nonce"
,
fc
::
raw
::
pack
(
nonce
++
)));
trx
.
set_reference_block
(
cc
.
head_block_id
());
trx
.
expiration
=
cc
.
head_block_time
()
+
fc
::
seconds
(
30
);
trx
.
net_usage_words
=
100
;
trx
.
sign
(
b_priv_key
,
chainid
);
cc
.
push_transaction
(
packed_transaction
(
trx
));
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录