Changeset View
Changeset View
Standalone View
Standalone View
src/core_write.cpp
Show First 20 Lines • Show All 166 Lines • ▼ Show 20 Lines | std::string ScriptToAsmStr(const CScript &script, | ||||
} | } | ||||
return str; | return str; | ||||
} | } | ||||
std::string EncodeHexTx(const CTransaction &tx, const int serializeFlags) { | std::string EncodeHexTx(const CTransaction &tx, const int serializeFlags) { | ||||
CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION | serializeFlags); | CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION | serializeFlags); | ||||
ssTx << tx; | ssTx << tx; | ||||
return HexStr(ssTx.begin(), ssTx.end()); | return HexStr(ssTx); | ||||
} | } | ||||
void ScriptToUniv(const CScript &script, UniValue &out, bool include_address) { | void ScriptToUniv(const CScript &script, UniValue &out, bool include_address) { | ||||
out.pushKV("asm", ScriptToAsmStr(script)); | out.pushKV("asm", ScriptToAsmStr(script)); | ||||
out.pushKV("hex", HexStr(script.begin(), script.end())); | out.pushKV("hex", HexStr(script)); | ||||
std::vector<std::vector<uint8_t>> solns; | std::vector<std::vector<uint8_t>> solns; | ||||
txnouttype type = Solver(script, solns); | txnouttype type = Solver(script, solns); | ||||
out.pushKV("type", GetTxnOutputType(type)); | out.pushKV("type", GetTxnOutputType(type)); | ||||
CTxDestination address; | CTxDestination address; | ||||
if (include_address && ExtractDestination(script, address) && | if (include_address && ExtractDestination(script, address) && | ||||
type != TX_PUBKEY) { | type != TX_PUBKEY) { | ||||
out.pushKV("address", EncodeDestination(address, GetConfig())); | out.pushKV("address", EncodeDestination(address, GetConfig())); | ||||
} | } | ||||
} | } | ||||
void ScriptPubKeyToUniv(const CScript &scriptPubKey, UniValue &out, | void ScriptPubKeyToUniv(const CScript &scriptPubKey, UniValue &out, | ||||
bool fIncludeHex) { | bool fIncludeHex) { | ||||
txnouttype type; | txnouttype type; | ||||
std::vector<CTxDestination> addresses; | std::vector<CTxDestination> addresses; | ||||
int nRequired; | int nRequired; | ||||
out.pushKV("asm", ScriptToAsmStr(scriptPubKey)); | out.pushKV("asm", ScriptToAsmStr(scriptPubKey)); | ||||
if (fIncludeHex) { | if (fIncludeHex) { | ||||
out.pushKV("hex", HexStr(scriptPubKey.begin(), scriptPubKey.end())); | out.pushKV("hex", HexStr(scriptPubKey)); | ||||
} | } | ||||
if (!ExtractDestinations(scriptPubKey, type, addresses, nRequired) || | if (!ExtractDestinations(scriptPubKey, type, addresses, nRequired) || | ||||
type == TX_PUBKEY) { | type == TX_PUBKEY) { | ||||
out.pushKV("type", GetTxnOutputType(type)); | out.pushKV("type", GetTxnOutputType(type)); | ||||
return; | return; | ||||
} | } | ||||
Show All 15 Lines | void TxToUniv(const CTransaction &tx, const uint256 &hashBlock, UniValue &entry, | ||||
entry.pushKV("size", (int)::GetSerializeSize(tx, PROTOCOL_VERSION)); | entry.pushKV("size", (int)::GetSerializeSize(tx, PROTOCOL_VERSION)); | ||||
entry.pushKV("locktime", (int64_t)tx.nLockTime); | entry.pushKV("locktime", (int64_t)tx.nLockTime); | ||||
UniValue vin(UniValue::VARR); | UniValue vin(UniValue::VARR); | ||||
for (unsigned int i = 0; i < tx.vin.size(); i++) { | for (unsigned int i = 0; i < tx.vin.size(); i++) { | ||||
const CTxIn &txin = tx.vin[i]; | const CTxIn &txin = tx.vin[i]; | ||||
UniValue in(UniValue::VOBJ); | UniValue in(UniValue::VOBJ); | ||||
if (tx.IsCoinBase()) { | if (tx.IsCoinBase()) { | ||||
in.pushKV("coinbase", | in.pushKV("coinbase", HexStr(txin.scriptSig)); | ||||
HexStr(txin.scriptSig.begin(), txin.scriptSig.end())); | |||||
} else { | } else { | ||||
in.pushKV("txid", txin.prevout.GetTxId().GetHex()); | in.pushKV("txid", txin.prevout.GetTxId().GetHex()); | ||||
in.pushKV("vout", int64_t(txin.prevout.GetN())); | in.pushKV("vout", int64_t(txin.prevout.GetN())); | ||||
UniValue o(UniValue::VOBJ); | UniValue o(UniValue::VOBJ); | ||||
o.pushKV("asm", ScriptToAsmStr(txin.scriptSig, true)); | o.pushKV("asm", ScriptToAsmStr(txin.scriptSig, true)); | ||||
o.pushKV("hex", | o.pushKV("hex", HexStr(txin.scriptSig)); | ||||
HexStr(txin.scriptSig.begin(), txin.scriptSig.end())); | |||||
in.pushKV("scriptSig", o); | in.pushKV("scriptSig", o); | ||||
} | } | ||||
in.pushKV("sequence", (int64_t)txin.nSequence); | in.pushKV("sequence", (int64_t)txin.nSequence); | ||||
vin.push_back(in); | vin.push_back(in); | ||||
} | } | ||||
entry.pushKV("vin", vin); | entry.pushKV("vin", vin); | ||||
Show All 28 Lines |