提交 a41b4d56 编写于 作者: K Kevin Heifner

Add context_free_data to packed_transaction and transaction_metadata

上级 3b135e8c
......@@ -212,6 +212,7 @@ namespace impl {
static void add(mutable_variant_object &out, const char* name, const packed_transaction& ptrx, Resolver resolver) {
mutable_variant_object mvo;
mvo("signatures", ptrx.signatures);
mvo("context_free_data", ptrx.context_free_data);
mvo("compression", ptrx.compression);
mvo("hex_data", ptrx.data);
......@@ -339,8 +340,10 @@ namespace impl {
static void extract( const variant& v, packed_transaction& ptrx, Resolver resolver ) {
const variant_object& vo = v.get_object();
FC_ASSERT(vo.contains("signatures"));
FC_ASSERT(vo.contains("context_free_data"));
FC_ASSERT(vo.contains("compression"));
from_variant(vo["signatures"], ptrx.signatures);
from_variant(vo["context_free_data"], ptrx.context_free_data);
from_variant(vo["compression"], ptrx.compression);
if (vo.contains("hex_data") && vo["hex_data"].is_string() && !vo["hex_data"].as_string().empty()) {
......
......@@ -148,14 +148,15 @@ namespace eosio { namespace chain {
signed_transaction() = default;
// signed_transaction( const signed_transaction& ) = default;
// signed_transaction( signed_transaction&& ) = default;
signed_transaction( transaction&& trx, const vector<signature_type>& signatures)
signed_transaction( transaction&& trx, const vector<signature_type>& signatures, const vector<bytes>& context_free_data)
: transaction(std::forward<transaction>(trx))
, signatures(signatures)
, context_free_data(context_free_data)
{
}
vector<signature_type> signatures;
vector<vector<char>> context_free_data; ///< for each context-free action, there is an entry here
vector<bytes> context_free_data; ///< for each context-free action, there is an entry here
const signature_type& sign(const private_key_type& key, const chain_id_type& chain_id);
signature_type sign(const private_key_type& key, const chain_id_type& chain_id)const;
......@@ -177,17 +178,20 @@ namespace eosio { namespace chain {
explicit packed_transaction(const signed_transaction& t, compression_type _compression = none)
:signatures(t.signatures)
,context_free_data(t.context_free_data)
{
set_transaction(t, _compression);
}
explicit packed_transaction(signed_transaction&& t, compression_type _compression = none)
:signatures(std::move(t.signatures))
,context_free_data(std::move(t.context_free_data))
{
set_transaction(t, _compression);
}
vector<signature_type> signatures;
vector<bytes> context_free_data;
compression_type compression;
bytes data;
......
......@@ -27,7 +27,7 @@ class transaction_metadata {
// things for packed_transaction
optional<bytes> raw_trx;
optional<transaction> decompressed_trx;
vector<vector<char>> context_free_data;
vector<bytes> context_free_data;
// things for signed/packed transactions
optional<flat_set<public_key_type>> signing_keys;
......
......@@ -204,7 +204,7 @@ transaction packed_transaction::get_transaction()const
signed_transaction packed_transaction::get_signed_transaction() const
{
return signed_transaction(get_transaction(), signatures);
return signed_transaction(get_transaction(), signatures, context_free_data);
}
void packed_transaction::set_transaction(const transaction& t, packed_transaction::compression_type _compression)
......
......@@ -7,6 +7,7 @@ namespace eosio { namespace chain {
transaction_metadata::transaction_metadata( const packed_transaction& t, chain_id_type chainid, const time_point& published )
:raw_trx(t.get_raw_transaction())
,decompressed_trx(fc::raw::unpack<transaction>(*raw_trx))
,context_free_data(t.context_free_data)
,id(decompressed_trx->id())
,bandwidth_usage( (uint32_t)fc::raw::pack_size(t) )
,published(published)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册