Gav Wood
11 years ago
17 changed files with 406 additions and 77 deletions
@ -0,0 +1,45 @@ |
|||||
|
/*
|
||||
|
This file is part of cpp-ethereum. |
||||
|
|
||||
|
cpp-ethereum is free software: you can redistribute it and/or modify |
||||
|
it under the terms of the GNU General Public License as published by |
||||
|
the Free Software Foundation, either version 3 of the License, or |
||||
|
(at your option) any later version. |
||||
|
|
||||
|
cpp-ethereum is distributed in the hope that it will be useful, |
||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
GNU General Public License for more details. |
||||
|
|
||||
|
You should have received a copy of the GNU General Public License |
||||
|
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
*/ |
||||
|
/** @file Manifest.cpp
|
||||
|
* @author Gav Wood <i@gavwood.com> |
||||
|
* @date 2014 |
||||
|
*/ |
||||
|
|
||||
|
#include "Manifest.h" |
||||
|
using namespace std; |
||||
|
using namespace eth; |
||||
|
|
||||
|
Manifest::Manifest(bytesConstRef _r) |
||||
|
{ |
||||
|
RLP r(_r); |
||||
|
from = r[0].toHash<Address>(); |
||||
|
to = r[1].toHash<Address>(); |
||||
|
value = r[2].toInt<u256>(); |
||||
|
altered = r[3].toVector<u256>(); |
||||
|
input = r[4].toBytes(); |
||||
|
output = r[5].toBytes(); |
||||
|
for (auto const& i: r[6]) |
||||
|
internal.emplace_back(i.data()); |
||||
|
} |
||||
|
|
||||
|
void Manifest::streamOut(RLPStream& _s) const |
||||
|
{ |
||||
|
_s.appendList(7) << from << to << value << altered << input << output; |
||||
|
_s.appendList(internal.size()); |
||||
|
for (auto const& i: internal) |
||||
|
i.streamOut(_s); |
||||
|
} |
@ -0,0 +1,53 @@ |
|||||
|
/*
|
||||
|
This file is part of cpp-ethereum. |
||||
|
|
||||
|
cpp-ethereum is free software: you can redistribute it and/or modify |
||||
|
it under the terms of the GNU General Public License as published by |
||||
|
the Free Software Foundation, either version 3 of the License, or |
||||
|
(at your option) any later version. |
||||
|
|
||||
|
cpp-ethereum is distributed in the hope that it will be useful, |
||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
GNU General Public License for more details. |
||||
|
|
||||
|
You should have received a copy of the GNU General Public License |
||||
|
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
*/ |
||||
|
/** @file Manifest.h
|
||||
|
* @author Gav Wood <i@gavwood.com> |
||||
|
* @date 2014 |
||||
|
*/ |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include <libethential/RLP.h> |
||||
|
#include <libethcore/CommonEth.h> |
||||
|
|
||||
|
namespace eth |
||||
|
{ |
||||
|
|
||||
|
struct Manifest; |
||||
|
using Manifests = std::vector<Manifest>; |
||||
|
|
||||
|
/**
|
||||
|
* @brief A record of the state-interaction of a transaction/call/create. |
||||
|
*/ |
||||
|
struct Manifest |
||||
|
{ |
||||
|
Manifest() {} |
||||
|
Manifest(bytesConstRef _r); |
||||
|
void streamOut(RLPStream& _s) const; |
||||
|
|
||||
|
h256 bloom() const { h256 ret = from.bloom() | to.bloom(); for (auto const& i: internal) ret |= i.bloom(); for (auto const& i: altered) ret |= h256(i).bloom(); return ret; } |
||||
|
|
||||
|
Address from; |
||||
|
Address to; |
||||
|
u256 value; |
||||
|
u256s altered; |
||||
|
bytes input; |
||||
|
bytes output; |
||||
|
Manifests internal; |
||||
|
}; |
||||
|
|
||||
|
} |
Loading…
Reference in new issue