Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
9278694a
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,发现更多精彩内容 >>
提交
9278694a
编写于
4月 12, 2017
作者:
N
Nathan Hourt
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Minor cleanup/refactor
上级
acddcffc
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
18 deletion
+17
-18
libraries/chain/include/eos/chain/protocol/block.hpp
libraries/chain/include/eos/chain/protocol/block.hpp
+9
-0
libraries/chain/protocol/block.cpp
libraries/chain/protocol/block.cpp
+8
-18
未找到文件。
libraries/chain/include/eos/chain/protocol/block.hpp
浏览文件 @
9278694a
...
...
@@ -50,6 +50,15 @@ namespace eos { namespace chain {
struct
thread
{
using
input_transaction
=
static_variant
<
signed_transaction
,
generated_transaction_id_type
>
;
struct
input_transaction_digest_visitor
{
using
result_type
=
digest_type
;
result_type
operator
()
(
const
signed_transaction
&
t
)
const
{
return
t
.
merkle_digest
();
}
result_type
operator
()
(
const
generated_transaction_id_type
&
id
)
const
{
return
id
;
}
};
vector
<
input_transaction
>
input_transactions
;
vector
<
generated_transaction
>
output_transactions
;
...
...
libraries/chain/protocol/block.cpp
浏览文件 @
9278694a
...
...
@@ -39,9 +39,9 @@ namespace eos { namespace chain {
block_id_type
signed_block_header
::
id
()
const
{
auto
tmp
=
fc
::
sha224
::
hash
(
*
this
);
auto
tmp
=
fc
::
sha224
::
hash
(
*
this
);
tmp
.
_hash
[
0
]
=
fc
::
endian_reverse_u32
(
block_num
());
// store the block num in the ID, 160 bits is plenty for the hash
static_assert
(
sizeof
(
tmp
.
_hash
[
0
])
==
4
,
"should be 4 bytes"
);
static_assert
(
sizeof
(
tmp
.
_hash
[
0
])
==
4
,
"should be 4 bytes"
);
block_id_type
result
;
memcpy
(
result
.
_hash
,
tmp
.
_hash
,
std
::
min
(
sizeof
(
result
),
sizeof
(
tmp
)));
return
result
;
...
...
@@ -49,15 +49,15 @@ namespace eos { namespace chain {
fc
::
ecc
::
public_key
signed_block_header
::
signee
()
const
{
return
fc
::
ecc
::
public_key
(
producer_signature
,
digest
(),
true
/*enforce canonical*/
);
return
fc
::
ecc
::
public_key
(
producer_signature
,
digest
(),
true
/*enforce canonical*/
);
}
void
signed_block_header
::
sign
(
const
fc
::
ecc
::
private_key
&
signer
)
void
signed_block_header
::
sign
(
const
fc
::
ecc
::
private_key
&
signer
)
{
producer_signature
=
signer
.
sign_compact
(
digest
()
);
producer_signature
=
signer
.
sign_compact
(
digest
()
);
}
bool
signed_block_header
::
validate_signee
(
const
fc
::
ecc
::
public_key
&
expected_signee
)
const
bool
signed_block_header
::
validate_signee
(
const
fc
::
ecc
::
public_key
&
expected_signee
)
const
{
return
signee
()
==
expected_signee
;
}
...
...
@@ -89,19 +89,9 @@ namespace eos { namespace chain {
digest_type
thread
::
merkle_digest
()
const
{
vector
<
digest_type
>
ids
;
input_transaction_digest_visitor
v
;
std
::
transform
(
input_transactions
.
begin
(),
input_transactions
.
end
(),
std
::
back_inserter
(
ids
),
[](
const
input_transaction
&
trx
)
{
struct
{
using
result_type
=
digest_type
;
result_type
operator
()
(
const
signed_transaction
&
t
)
{
return
t
.
merkle_digest
();
}
result_type
operator
()
(
const
generated_transaction_id_type
&
id
)
{
return
id
;
}
}
digester
;
return
trx
.
visit
(
digester
);
});
[
v
=
input_transaction_digest_visitor
()](
const
input_transaction
&
t
)
{
return
t
.
visit
(
v
);
});
std
::
transform
(
output_transactions
.
begin
(),
output_transactions
.
end
(),
std
::
back_inserter
(
ids
),
std
::
bind
(
&
generated_transaction
::
merkle_digest
,
std
::
placeholders
::
_1
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录