Fabcoin Core
0.16.2
P2P Digital Currency
|
Compact serializer for scripts. More...
#include <compressor.h>
Public Member Functions | |
CScriptCompressor (CScript &scriptIn) | |
template<typename Stream > | |
void | Serialize (Stream &s) const |
template<typename Stream > | |
void | Unserialize (Stream &s) |
Protected Member Functions | |
bool | IsToKeyID (CKeyID &hash) const |
These check for scripts for which a special case with a shorter encoding is defined. More... | |
bool | IsToScriptID (CScriptID &hash) const |
bool | IsToPubKey (CPubKey &pubkey) const |
bool | Compress (std::vector< unsigned char > &out) const |
unsigned int | GetSpecialSize (unsigned int nSize) const |
bool | Decompress (unsigned int nSize, const std::vector< unsigned char > &out) |
Private Attributes | |
CScript & | script |
Static Private Attributes | |
static const unsigned int | nSpecialScripts = 6 |
make this static for now (there are only 6 special scripts defined) this can potentially be extended together with a new nVersion for transactions, in which case this value becomes dependent on nVersion and nHeight of the enclosing transaction. More... | |
Compact serializer for scripts.
It detects common cases and encodes them much more efficiently. 3 special cases are defined:
Other scripts up to 121 bytes require 1 byte + script length. Above that, scripts up to 16505 bytes require 2 bytes + script length.
Definition at line 28 of file compressor.h.
|
inline |
Definition at line 56 of file compressor.h.
|
protected |
Definition at line 48 of file compressor.cpp.
|
protected |
Definition at line 88 of file compressor.cpp.
|
protected |
|
protected |
These check for scripts for which a special case with a shorter encoding is defined.
They are implemented separately from the CScript test, as these test for exact byte sequence correspondences, and are more strict. For example, IsToPubKey also verifies whether the public key is valid (as invalid ones cannot be represented in compressed form).
Definition at line 12 of file compressor.cpp.
|
protected |
Definition at line 33 of file compressor.cpp.
|
protected |
Definition at line 23 of file compressor.cpp.
|
inline |
|
inline |
|
staticprivate |
make this static for now (there are only 6 special scripts defined) this can potentially be extended together with a new nVersion for transactions, in which case this value becomes dependent on nVersion and nHeight of the enclosing transaction.
Definition at line 37 of file compressor.h.
|
private |
Definition at line 39 of file compressor.h.