void run() { RippleAddress seed; seed.setSeedRandom (); RippleAddress generator = RippleAddress::createGeneratorPublic (seed); RippleAddress publicAcct = RippleAddress::createAccountPublic (generator, 1); RippleAddress privateAcct = RippleAddress::createAccountPrivate (generator, seed, 1); STTx j (ttACCOUNT_SET); j.setSourceAccount (publicAcct); j.setSigningPubKey (publicAcct); j.setFieldVL (sfMessageKey, publicAcct.getAccountPublic ()); j.sign (privateAcct); unexpected (!j.checkSign (), "Transaction fails signature test"); Serializer rawTxn; j.add (rawTxn); SerialIter sit (rawTxn); STTx copy (sit); if (copy != j) { log << j.getJson (0); log << copy.getJson (0); fail ("Transaction fails serialize/deserialize test"); } else { pass (); } STParsedJSONObject parsed ("test", j.getJson (0)); if (!parsed.object) fail ("Unable to build object from json"); if (STObject (j) != parsed.object) { log << "ORIG: " << j.getJson (0); log << "BUILT " << parsed.object->getJson (0); fail ("Built a different transaction"); } else { pass (); } }
STObject& TransactionMetaSet::getAffectedNode (SLE::ref node, SField const& type) { assert (&type); uint256 index = node->getIndex (); for (auto& n : mNodes) { if (n.getFieldH256 (sfLedgerIndex) == index) return n; } mNodes.push_back (STObject (type)); STObject& obj = mNodes.back (); assert (obj.getFName () == type); obj.setFieldH256 (sfLedgerIndex, index); obj.setFieldU16 (sfLedgerEntryType, node->getFieldU16 (sfLedgerEntryType)); return obj; }
void TransactionMetaSet::setAffectedNode (uint256 const& node, SField const& type, std::uint16_t nodeType) { // make sure the node exists and force its type for (auto& n : mNodes) { if (n.getFieldH256 (sfLedgerIndex) == node) { n.setFName (type); n.setFieldU16 (sfLedgerEntryType, nodeType); return; } } mNodes.push_back (STObject (type)); STObject& obj = mNodes.back (); assert (obj.getFName () == type); obj.setFieldH256 (sfLedgerIndex, node); obj.setFieldU16 (sfLedgerEntryType, nodeType); }