Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
43e8ada5
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,发现更多精彩内容 >>
提交
43e8ada5
编写于
12月 04, 2017
作者:
B
Bart Wyatt
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
renamed serial to sequence WRT scope transcript proving
上级
4bd850b3
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
64 addition
and
17 deletion
+64
-17
libraries/chain/apply_context.cpp
libraries/chain/apply_context.cpp
+11
-11
libraries/chain/chain_controller.cpp
libraries/chain/chain_controller.cpp
+2
-2
libraries/chain/include/eosio/chain/scope_sequence_object.hpp
...aries/chain/include/eosio/chain/scope_sequence_object.hpp
+47
-0
libraries/chain/include/eosio/chain/transaction.hpp
libraries/chain/include/eosio/chain/transaction.hpp
+2
-2
libraries/chain/include/eosio/chain/types.hpp
libraries/chain/include/eosio/chain/types.hpp
+2
-2
未找到文件。
libraries/chain/apply_context.cpp
浏览文件 @
43e8ada5
...
...
@@ -2,7 +2,7 @@
#include <eosio/chain/chain_controller.hpp>
#include <eosio/chain/wasm_interface.hpp>
#include <eosio/chain/generated_transaction_object.hpp>
#include <eosio/chain/scope_se
rial
_object.hpp>
#include <eosio/chain/scope_se
quence
_object.hpp>
namespace
eosio
{
namespace
chain
{
void
apply_context
::
exec_one
()
...
...
@@ -28,21 +28,21 @@ void apply_context::exec_one()
data_access
.
reserve
(
trx
.
write_scope
.
size
()
+
trx
.
read_scope
.
size
());
for
(
const
auto
&
scope
:
trx
.
write_scope
)
{
auto
key
=
boost
::
make_tuple
(
scope
,
receiver
);
const
auto
&
scope_se
rial
=
mutable_controller
.
get_database
().
find
<
scope_serial
_object
,
by_scope_receiver
>
(
key
);
if
(
scope_se
rial
==
nullptr
)
{
const
auto
&
scope_se
quence
=
mutable_controller
.
get_database
().
find
<
scope_sequence
_object
,
by_scope_receiver
>
(
key
);
if
(
scope_se
quence
==
nullptr
)
{
try
{
mutable_controller
.
get_mutable_database
().
create
<
scope_se
rial_object
>
([
&
](
scope_serial
_object
&
ss
)
{
mutable_controller
.
get_mutable_database
().
create
<
scope_se
quence_object
>
([
&
](
scope_sequence
_object
&
ss
)
{
ss
.
scope
=
scope
;
ss
.
receiver
=
receiver
;
ss
.
se
rial
=
1
;
ss
.
se
quence
=
1
;
});
}
FC_CAPTURE_AND_RETHROW
((
scope
)(
receiver
));
data_access
.
emplace_back
(
data_access_info
{
data_access_info
::
write
,
scope
,
0
});
}
else
{
data_access
.
emplace_back
(
data_access_info
{
data_access_info
::
write
,
scope
,
scope_se
rial
->
serial
});
data_access
.
emplace_back
(
data_access_info
{
data_access_info
::
write
,
scope
,
scope_se
quence
->
sequence
});
try
{
mutable_controller
.
get_mutable_database
().
modify
(
*
scope_se
rial
,
[
&
](
scope_serial
_object
&
ss
)
{
ss
.
se
rial
+=
1
;
mutable_controller
.
get_mutable_database
().
modify
(
*
scope_se
quence
,
[
&
](
scope_sequence
_object
&
ss
)
{
ss
.
se
quence
+=
1
;
});
}
FC_CAPTURE_AND_RETHROW
((
scope
)(
receiver
));
}
...
...
@@ -50,11 +50,11 @@ void apply_context::exec_one()
for
(
const
auto
&
scope
:
trx
.
read_scope
)
{
auto
key
=
boost
::
make_tuple
(
scope
,
receiver
);
const
auto
&
scope_se
rial
=
mutable_controller
.
get_database
().
find
<
scope_serial
_object
,
by_scope_receiver
>
(
key
);
if
(
scope_se
rial
==
nullptr
)
{
const
auto
&
scope_se
quence
=
mutable_controller
.
get_database
().
find
<
scope_sequence
_object
,
by_scope_receiver
>
(
key
);
if
(
scope_se
quence
==
nullptr
)
{
data_access
.
emplace_back
(
data_access_info
{
data_access_info
::
read
,
scope
,
0
});
}
else
{
data_access
.
emplace_back
(
data_access_info
{
data_access_info
::
read
,
scope
,
scope_se
rial
->
serial
});
data_access
.
emplace_back
(
data_access_info
{
data_access_info
::
read
,
scope
,
scope_se
quence
->
sequence
});
}
}
...
...
libraries/chain/chain_controller.cpp
浏览文件 @
43e8ada5
...
...
@@ -16,7 +16,7 @@
#include <eosio/chain/authority_checker.hpp>
#include <eosio/chain/contracts/chain_initializer.hpp>
#include <eosio/chain/contracts/producer_objects.hpp>
#include <eosio/chain/scope_se
rial
_object.hpp>
#include <eosio/chain/scope_se
quence
_object.hpp>
#include <eosio/chain/merkle.hpp>
#include <eosio/chain/wasm_interface.hpp>
...
...
@@ -938,7 +938,7 @@ void chain_controller::_initialize_indexes() {
_db
.
add_index
<
transaction_multi_index
>
();
_db
.
add_index
<
generated_transaction_multi_index
>
();
_db
.
add_index
<
producer_multi_index
>
();
_db
.
add_index
<
scope_se
rial
_multi_index
>
();
_db
.
add_index
<
scope_se
quence
_multi_index
>
();
}
void
chain_controller
::
_initialize_chain
(
contracts
::
chain_initializer
&
starter
)
...
...
libraries/chain/include/eosio/chain/scope_se
rial
_object.hpp
→
libraries/chain/include/eosio/chain/scope_se
quence
_object.hpp
浏览文件 @
43e8ada5
...
...
@@ -12,36 +12,36 @@
namespace
eosio
{
namespace
chain
{
class
scope_se
rial_object
:
public
chainbase
::
object
<
scope_serial_object_type
,
scope_serial
_object
>
{
OBJECT_CTOR
(
scope_se
rial
_object
)
class
scope_se
quence_object
:
public
chainbase
::
object
<
scope_sequence_object_type
,
scope_sequence
_object
>
{
OBJECT_CTOR
(
scope_se
quence
_object
)
id_type
id
;
scope_name
scope
;
account_name
receiver
;
uint64_t
se
rial
=
0
;
uint64_t
se
quence
=
0
;
};
using
scope_se
rial_id_type
=
scope_serial
_object
::
id_type
;
using
scope_se
quence_id_type
=
scope_sequence
_object
::
id_type
;
struct
by_scope_receiver
;
using
scope_se
rial
_multi_index
=
chainbase
::
shared_multi_index_container
<
scope_se
rial
_object
,
using
scope_se
quence
_multi_index
=
chainbase
::
shared_multi_index_container
<
scope_se
quence
_object
,
indexed_by
<
ordered_unique
<
tag
<
by_id
>
,
member
<
scope_se
rial_object
,
scope_serial_object
::
id_type
,
&
scope_serial
_object
::
id
>>
,
ordered_unique
<
tag
<
by_id
>
,
member
<
scope_se
quence_object
,
scope_sequence_object
::
id_type
,
&
scope_sequence
_object
::
id
>>
,
ordered_unique
<
tag
<
by_scope_receiver
>
,
composite_key
<
scope_se
rial
_object
,
member
<
scope_se
rial_object
,
scope_name
,
&
scope_serial
_object
::
scope
>
,
member
<
scope_se
rial_object
,
account_name
,
&
scope_serial
_object
::
receiver
>
composite_key
<
scope_se
quence
_object
,
member
<
scope_se
quence_object
,
scope_name
,
&
scope_sequence
_object
::
scope
>
,
member
<
scope_se
quence_object
,
account_name
,
&
scope_sequence
_object
::
receiver
>
>
>
>
>
;
typedef
chainbase
::
generic_index
<
scope_se
rial_multi_index
>
scope_serial
_index
;
typedef
chainbase
::
generic_index
<
scope_se
quence_multi_index
>
scope_sequence
_index
;
}
}
// eosio::chain
CHAINBASE_SET_INDEX_TYPE
(
eosio
::
chain
::
scope_se
rial_object
,
eosio
::
chain
::
scope_serial
_multi_index
)
CHAINBASE_SET_INDEX_TYPE
(
eosio
::
chain
::
scope_se
quence_object
,
eosio
::
chain
::
scope_sequence
_multi_index
)
FC_REFLECT
(
chainbase
::
oid
<
eosio
::
chain
::
scope_se
rial
_object
>
,
(
_id
))
FC_REFLECT
(
chainbase
::
oid
<
eosio
::
chain
::
scope_se
quence
_object
>
,
(
_id
))
FC_REFLECT
(
eosio
::
chain
::
scope_se
rial_object
,
(
id
)(
scope
)(
receiver
)(
serial
))
FC_REFLECT
(
eosio
::
chain
::
scope_se
quence_object
,
(
id
)(
scope
)(
receiver
)(
sequence
))
libraries/chain/include/eosio/chain/transaction.hpp
浏览文件 @
43e8ada5
...
...
@@ -159,7 +159,7 @@ namespace eosio { namespace chain {
access_type
type
;
scope_name
scope
;
uint64_t
se
rial
;
uint64_t
se
quence
;
};
struct
action_trace
{
...
...
@@ -187,7 +187,7 @@ FC_REFLECT_DERIVED( eosio::chain::transaction, (eosio::chain::transaction_header
FC_REFLECT_DERIVED
(
eosio
::
chain
::
signed_transaction
,
(
eosio
::
chain
::
transaction
),
(
signatures
)
)
FC_REFLECT_DERIVED
(
eosio
::
chain
::
deferred_transaction
,
(
eosio
::
chain
::
transaction
),
(
sender_id
)(
sender
)(
execute_after
)
)
FC_REFLECT_ENUM
(
eosio
::
chain
::
data_access_info
::
access_type
,
(
read
)(
write
))
FC_REFLECT
(
eosio
::
chain
::
data_access_info
,
(
type
)(
scope
)(
se
rial
))
FC_REFLECT
(
eosio
::
chain
::
data_access_info
,
(
type
)(
scope
)(
se
quence
))
FC_REFLECT
(
eosio
::
chain
::
action_trace
,
(
receiver
)(
act
)(
console
)(
region_id
)(
cycle_index
)(
data_access
)
)
FC_REFLECT
(
eosio
::
chain
::
transaction_receipt
,
(
status
)(
id
))
FC_REFLECT_ENUM
(
eosio
::
chain
::
transaction_receipt
::
status_enum
,
(
executed
)(
soft_fail
)(
hard_fail
))
...
...
libraries/chain/include/eosio/chain/types.hpp
浏览文件 @
43e8ada5
...
...
@@ -137,7 +137,7 @@ namespace eosio { namespace chain {
proxy_vote_object_type
,
///< Defined by native_contract library
key64x64x64_value_object_type
,
keystr_value_object_type
,
scope_se
rial
_object_type
,
scope_se
quence
_object_type
,
OBJECT_TYPE_COUNT
///< Sentry value which contains the number of different object types
};
...
...
@@ -186,7 +186,7 @@ FC_REFLECT_ENUM(eosio::chain::object_type,
(
proxy_vote_object_type
)
(
key64x64x64_value_object_type
)
(
keystr_value_object_type
)
(
scope_se
rial
_object_type
)
(
scope_se
quence
_object_type
)
(
OBJECT_TYPE_COUNT
)
)
FC_REFLECT
(
eosio
::
chain
::
void_t
,
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录