提交 43e8ada5 编写于 作者: B Bart Wyatt

renamed serial to sequence WRT scope transcript proving

上级 4bd850b3
......@@ -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_serial_object.hpp>
#include <eosio/chain/scope_sequence_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_serial = mutable_controller.get_database().find<scope_serial_object, by_scope_receiver>(key);
if (scope_serial == nullptr) {
const auto& scope_sequence = mutable_controller.get_database().find<scope_sequence_object, by_scope_receiver>(key);
if (scope_sequence == nullptr) {
try {
mutable_controller.get_mutable_database().create<scope_serial_object>([&](scope_serial_object &ss) {
mutable_controller.get_mutable_database().create<scope_sequence_object>([&](scope_sequence_object &ss) {
ss.scope = scope;
ss.receiver = receiver;
ss.serial = 1;
ss.sequence = 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_serial->serial});
data_access.emplace_back(data_access_info{data_access_info::write, scope, scope_sequence->sequence});
try {
mutable_controller.get_mutable_database().modify(*scope_serial, [&](scope_serial_object& ss) {
ss.serial += 1;
mutable_controller.get_mutable_database().modify(*scope_sequence, [&](scope_sequence_object& ss) {
ss.sequence += 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_serial = mutable_controller.get_database().find<scope_serial_object, by_scope_receiver>(key);
if (scope_serial == nullptr) {
const auto& scope_sequence = mutable_controller.get_database().find<scope_sequence_object, by_scope_receiver>(key);
if (scope_sequence == 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_serial->serial});
data_access.emplace_back(data_access_info{data_access_info::read, scope, scope_sequence->sequence});
}
}
......
......@@ -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_serial_object.hpp>
#include <eosio/chain/scope_sequence_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_serial_multi_index>();
_db.add_index<scope_sequence_multi_index>();
}
void chain_controller::_initialize_chain(contracts::chain_initializer& starter)
......
......@@ -12,36 +12,36 @@
namespace eosio { namespace chain {
class scope_serial_object : public chainbase::object<scope_serial_object_type, scope_serial_object> {
OBJECT_CTOR(scope_serial_object)
class scope_sequence_object : public chainbase::object<scope_sequence_object_type, scope_sequence_object> {
OBJECT_CTOR(scope_sequence_object)
id_type id;
scope_name scope;
account_name receiver;
uint64_t serial = 0;
uint64_t sequence = 0;
};
using scope_serial_id_type = scope_serial_object::id_type;
using scope_sequence_id_type = scope_sequence_object::id_type;
struct by_scope_receiver;
using scope_serial_multi_index = chainbase::shared_multi_index_container<
scope_serial_object,
using scope_sequence_multi_index = chainbase::shared_multi_index_container<
scope_sequence_object,
indexed_by<
ordered_unique<tag<by_id>, member<scope_serial_object, scope_serial_object::id_type, &scope_serial_object::id>>,
ordered_unique<tag<by_id>, member<scope_sequence_object, scope_sequence_object::id_type, &scope_sequence_object::id>>,
ordered_unique<tag<by_scope_receiver>,
composite_key< scope_serial_object,
member<scope_serial_object, scope_name, &scope_serial_object::scope>,
member<scope_serial_object, account_name, &scope_serial_object::receiver>
composite_key< scope_sequence_object,
member<scope_sequence_object, scope_name, &scope_sequence_object::scope>,
member<scope_sequence_object, account_name, &scope_sequence_object::receiver>
>
>
>
>;
typedef chainbase::generic_index<scope_serial_multi_index> scope_serial_index;
typedef chainbase::generic_index<scope_sequence_multi_index> scope_sequence_index;
} } // eosio::chain
CHAINBASE_SET_INDEX_TYPE(eosio::chain::scope_serial_object, eosio::chain::scope_serial_multi_index)
CHAINBASE_SET_INDEX_TYPE(eosio::chain::scope_sequence_object, eosio::chain::scope_sequence_multi_index)
FC_REFLECT(chainbase::oid<eosio::chain::scope_serial_object>, (_id))
FC_REFLECT(chainbase::oid<eosio::chain::scope_sequence_object>, (_id))
FC_REFLECT(eosio::chain::scope_serial_object, (id)(scope)(receiver)(serial))
FC_REFLECT(eosio::chain::scope_sequence_object, (id)(scope)(receiver)(sequence))
......@@ -159,7 +159,7 @@ namespace eosio { namespace chain {
access_type type;
scope_name scope;
uint64_t serial;
uint64_t sequence;
};
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)(serial))
FC_REFLECT( eosio::chain::data_access_info, (type)(scope)(sequence))
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))
......
......@@ -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_serial_object_type,
scope_sequence_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_serial_object_type)
(scope_sequence_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.
先完成此消息的编辑!
想要评论请 注册