diff --git a/src/bitcoindjs.cc b/src/bitcoindjs.cc index c3bd6b73..0a79f22d 100644 --- a/src/bitcoindjs.cc +++ b/src/bitcoindjs.cc @@ -2201,6 +2201,170 @@ hextx_to_ctx(std::string tx_hex, CTransaction& ctx) { } } +#if 0 +static inline void +jsblock_to_cblock(const Local obj, CBlock& block, CBlockIndex* blockindex) { + obj->Get(NanNew("confirmations"))->IntegerValue(); + obj->Get(NanNew("size"))->IntegerValue(); + obj->Get(NanNew("height"))->IntegerValue(); + obj->Get(NanNew("version"))->IntegerValue(); + obj->Get(NanNew("merkleroot"))->IntegerValue(); + + Local txs = obj->Get("tx"); + for (int ti = 0; ti < txs.Length(); ti++) { + Local entry = txs->Get(ti); + CTransaction tx; + + entry->Get(NanNew("hex")); + entry->Get(NanNew("txid")); + entry->Get(NanNew("version")); + entry->Get(NanNew("locktime")); + + Local vin = entry->Get("vin"); + for (int vi = 0; vi < vin.Length(); vi++) { + CTxIn txin; + Local in = vin->Get(vi); + if (in->Get(NanNew("coinbase"))->IsString()) { + in->Get(NanNew("coinbase")); + } else { + in->Get(NanNew("txid"), NanNew(txin.prevout.hash.GetHex())); + in->Get(NanNew("vout"), NanNew((boost::int64_t)txin.prevout.n)); + Local o = in->Get(NanNew("scriptSig"), o); + o->Get(NanNew("asm")); + o->Get(NanNew("hex")); + } + in->Get(NanNew("sequence")); + } + + Local vout = entry->Get("vout"); + for (unsigned int vo = 0; vo < vout.Length(); vo++) { + const CTxOut txout; + Local out = vout->Get(vo); + + out->Get(NanNew("value")); + out->Get(NanNew("n")); + + Local o = out->Get(NanNew("scriptPubKey")); + { + CScript scriptPubKey; + Local out = o; + bool fIncludeHex = true; + + txnouttype type; + vector addresses; + int nRequired; + out->Get(NanNew("asm")); + if (fIncludeHex) { + out->Set(NanNew("hex")); + } + if (!ExtractDestinations(scriptPubKey, type, addresses, nRequired)) { + out->Set(NanNew("type")); + } else { + out->Set(NanNew("reqSigs")); + out->Set(NanNew("type")); + Local a = out->Get("addresses"); + for (int ai = 0; ai < a.Length(); ai++) { + CTxDestination addr; + a->Get(ai); + } + } + } + } + + if (entry->Get(NanNew("blockhash"))->IsString()) { + const uint256 hashBlock; + entry->Get(NanNew("blockhash")); + if (entry->Get(NanNew("time"))->IsNumber()) { + entry->Get(NanNew("confirmations")); + entry->Get(NanNew("time")); + entry->Get(NanNew("blocktime")); + } else { + entry->Get(NanNew("confirmations")); + } + } + } + + obj->Get(NanNew("time")); + obj->Get(NanNew("nonce")); + obj->Get(NanNew("bits")); + obj->Get(NanNew("difficulty")); + obj->Get(NanNew("chainwork")); + if (obj->Get(NanNew("previousblockhash"))->IsString()) { + obj->Get(NanNew("previousblockhash")); + } + if (obj->Get(NanNew("nextblockhash"))->IsString()) { + CBlockIndex pnext; + obj->Get(NanNew("nextblockhash")); + } +} + +static inline void +jstx_to_ctx(const Local entry, CTransaction& tx, uint256 hashBlock) { + entry->Get(NanNew("hex"), NanNew(strHex)); + entry->Get(NanNew("txid"), NanNew(tx.GetHash().GetHex())); + entry->Get(NanNew("version"), NanNew(tx.nVersion)); + entry->Get(NanNew("locktime"), NanNew(tx.nLockTime)); + + Local vin = entry->Get("vin"); + for (int vi = 0; vi < vin.Length(); vi++) { + const CTxIn txin; + Local in = vin->Get(vi); + if (in->Get(NanNew("coinbase")->IsString()) { + in->Get(NanNew("coinbase")); + } else { + in->Get(NanNew("txid"), NanNew(txin.prevout.hash.GetHex())); + in->Get(NanNew("vout"), NanNew((boost::int64_t)txin.prevout.n)); + Local o = in->Get(NanNew("scriptSig")); + o->Get(NanNew("asm"), NanNew(txin.scriptSig.ToString())); + o->Get(NanNew("hex"), NanNew(HexStr(txin.scriptSig.begin(), txin.scriptSig.end()))); + } + in->Get(NanNew("sequence"), NanNew((boost::int64_t)txin.nSequence)); + } + + Local vout = entry->Get("vout"); + for (unsigned int vo = 0; vo < vout.Length(); vo++) { + CTxOut txout; + Local out = vout->Get(vo); + out->Get(NanNew("value")); + out->Get(NanNew("n")); + + Local o = out->Get(NanNew("scriptPubKey")); + { + CScript scriptPubKey; + Local out = o; + + out->Get(NanNew("asm")); + if (out->Get(NanNew("hex"))->IsString()) { + out->Get(NanNew("hex")); + } + if (out->Get(NanNew("type"))->IsString()) { + out->Get(NanNew("type")); + } else { + out->Get(NanNew("reqSigs")); + out->Get(NanNew("type")); + Local a = out->Get("addresses"); + for (int ai = 0; ai < a.Length(); ai++) { + CTxDestination addr; + a->get(ai); + } + } + } + } + + if (entry->Get(NanNew("blockhash"))->IsString()) { + entry->Get(NanNew("blockhash")); + CBlockIndex pindex; + if (entry->Get("time")->IsNumber()) { + entry->Get(NanNew("confirmations")); + entry->Get(NanNew("time")); + entry->Get(NanNew("blocktime")); + } else { + entry->Get(NanNew("confirmations")); + } + } +} +#endif + /** * Init */