uint64_t getTransactionInputAmount(const TransactionInput& in) { if (in.type() == typeid(KeyInput)) { return boost::get<KeyInput>(in).amount; } if (in.type() == typeid(MultisignatureInput)) { return boost::get<MultisignatureInput>(in).amount; } return 0; }
size_t getRequiredSignaturesCount(const TransactionInput& in) { if (in.type() == typeid(KeyInput)) { return boost::get<KeyInput>(in).outputIndexes.size(); } if (in.type() == typeid(MultisignatureInput)) { return boost::get<MultisignatureInput>(in).signatureCount; } return 0; }
TransactionTypes::InputType getTransactionInputType(const TransactionInput& in) { if (in.type() == typeid(KeyInput)) { return TransactionTypes::InputType::Key; } if (in.type() == typeid(BaseInput)) { return TransactionTypes::InputType::Generating; } return TransactionTypes::InputType::Invalid; }
uint64_t Currency::getTransactionInputAmount(const TransactionInput& in, uint32_t height) const { if (in.type() == typeid(KeyInput)) { return boost::get<KeyInput>(in).amount; } else if (in.type() == typeid(MultisignatureInput)) { const MultisignatureInput& multisignatureInput = boost::get<MultisignatureInput>(in); if (multisignatureInput.term == 0) { return multisignatureInput.amount; } else { return multisignatureInput.amount + calculateInterest(multisignatureInput.amount, multisignatureInput.term, height); } } else if (in.type() == typeid(BaseInput)) { return 0; } else { assert(false); return 0; } }