blob: 76f19b56165c0b944bf6fe7ab4ebfa078a2bca7a [file] [log] [blame]
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ResilientDB SDK: Transaction Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen_html_style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classresdb__driver_1_1transaction_1_1Transaction.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-static-methods">Static Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classresdb__driver_1_1transaction_1_1Transaction-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">Transaction Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>A Transaction is used to create and transfer assets.
<a href="classresdb__driver_1_1transaction_1_1Transaction.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for Transaction:</div>
<div class="dyncontent">
<div class="center">
<img src="classresdb__driver_1_1transaction_1_1Transaction.png" alt=""/>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a909a2bc6a3c96fc53d3ae93305e81486" id="r_a909a2bc6a3c96fc53d3ae93305e81486"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a909a2bc6a3c96fc53d3ae93305e81486">__eq__</a> (self, other)</td></tr>
<tr class="separator:a909a2bc6a3c96fc53d3ae93305e81486"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02dbc351ffad3c948deeea2971ba7407" id="r_a02dbc351ffad3c948deeea2971ba7407"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a02dbc351ffad3c948deeea2971ba7407">__init__</a> (self, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ad34e7fb3c33543e9f3a1e48486fa7692">operation</a>, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a132fe4f7d81980f1e0f4316d4c6f2f35">asset</a>, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#afde3b66b6b41bd008469f366fa756e54">inputs</a>=None, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#af8d743b78404b120589eca8c77c1c2a9">outputs</a>=None, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a9cfcb724bbf4bae5f97bc17cf58cf522">metadata</a>=None, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a4c7a521b8f1a0769c09bfa4a1fca7dab">version</a>=None, hash_id=None)</td></tr>
<tr class="memdesc:a02dbc351ffad3c948deeea2971ba7407"><td class="mdescLeft">&#160;</td><td class="mdescRight">The constructor allows to create a customizable Transaction. <br /></td></tr>
<tr class="separator:a02dbc351ffad3c948deeea2971ba7407"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40b37c981a056437fd94276341c63fe8" id="r_a40b37c981a056437fd94276341c63fe8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a40b37c981a056437fd94276341c63fe8">__str__</a> (self)</td></tr>
<tr class="separator:a40b37c981a056437fd94276341c63fe8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac54fec6235c176d3c1322c5602fe0aaa" id="r_ac54fec6235c176d3c1322c5602fe0aaa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ac54fec6235c176d3c1322c5602fe0aaa">add_input</a> (self, input_)</td></tr>
<tr class="memdesc:ac54fec6235c176d3c1322c5602fe0aaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds an input to a Transaction's list of inputs. <br /></td></tr>
<tr class="separator:ac54fec6235c176d3c1322c5602fe0aaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad083ed5c99644b6abb7266727b86db38" id="r_ad083ed5c99644b6abb7266727b86db38"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ad083ed5c99644b6abb7266727b86db38">add_output</a> (self, output)</td></tr>
<tr class="memdesc:ad083ed5c99644b6abb7266727b86db38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds an output to a Transaction's list of outputs. <br /></td></tr>
<tr class="separator:ad083ed5c99644b6abb7266727b86db38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbbf28fba72487663332a1602c7424d1" id="r_adbbf28fba72487663332a1602c7424d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#adbbf28fba72487663332a1602c7424d1">create</a> (cls, tx_signers, recipients, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a9cfcb724bbf4bae5f97bc17cf58cf522">metadata</a>=None, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a132fe4f7d81980f1e0f4316d4c6f2f35">asset</a>=None)</td></tr>
<tr class="memdesc:adbbf28fba72487663332a1602c7424d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">A simple way to generate a <code>CREATE</code> transaction. <br /></td></tr>
<tr class="separator:adbbf28fba72487663332a1602c7424d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc3fd145c19b174107cbe5ce79fba6b5" id="r_adc3fd145c19b174107cbe5ce79fba6b5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#adc3fd145c19b174107cbe5ce79fba6b5">from_db</a> (cls, resdb, tx_dict_list)</td></tr>
<tr class="memdesc:adc3fd145c19b174107cbe5ce79fba6b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper method that reconstructs a transaction dict that was returned from the database. <br /></td></tr>
<tr class="separator:adc3fd145c19b174107cbe5ce79fba6b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ae2ee0315bf7ad47f07ca2bb6a55d1f" id="r_a2ae2ee0315bf7ad47f07ca2bb6a55d1f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a2ae2ee0315bf7ad47f07ca2bb6a55d1f">from_dict</a> (cls, tx, skip_schema_validation=True)</td></tr>
<tr class="memdesc:a2ae2ee0315bf7ad47f07ca2bb6a55d1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transforms a Python dictionary to a Transaction object. <br /></td></tr>
<tr class="separator:a2ae2ee0315bf7ad47f07ca2bb6a55d1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba303485588abb149a4521cde1a38a06" id="r_aba303485588abb149a4521cde1a38a06"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#aba303485588abb149a4521cde1a38a06">id</a> (self)</td></tr>
<tr class="separator:aba303485588abb149a4521cde1a38a06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3670b878ca322ec50cdfa87dc516c37b" id="r_a3670b878ca322ec50cdfa87dc516c37b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a3670b878ca322ec50cdfa87dc516c37b">inputs_valid</a> (self, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#af8d743b78404b120589eca8c77c1c2a9">outputs</a>=None)</td></tr>
<tr class="memdesc:a3670b878ca322ec50cdfa87dc516c37b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validates the Inputs in the Transaction against given Outputs. <br /></td></tr>
<tr class="separator:a3670b878ca322ec50cdfa87dc516c37b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6c5425e15f6fa5a565ec73b411e4867" id="r_ae6c5425e15f6fa5a565ec73b411e4867"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ae6c5425e15f6fa5a565ec73b411e4867">resolve_class</a> (<a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ad34e7fb3c33543e9f3a1e48486fa7692">operation</a>)</td></tr>
<tr class="memdesc:ae6c5425e15f6fa5a565ec73b411e4867"><td class="mdescLeft">&#160;</td><td class="mdescRight">For the given <code>tx</code> based on the <code>operation</code> key return its implementation class. <br /></td></tr>
<tr class="separator:ae6c5425e15f6fa5a565ec73b411e4867"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d6865217ba82d666cfbab6efc544b7f" id="r_a1d6865217ba82d666cfbab6efc544b7f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a1d6865217ba82d666cfbab6efc544b7f">serialized</a> (self)</td></tr>
<tr class="separator:a1d6865217ba82d666cfbab6efc544b7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba89e7c2abc95957e26ed4741d2ef5af" id="r_aba89e7c2abc95957e26ed4741d2ef5af"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#aba89e7c2abc95957e26ed4741d2ef5af">sign</a> (self, private_keys)</td></tr>
<tr class="memdesc:aba89e7c2abc95957e26ed4741d2ef5af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fulfills a previous Transaction's Output by signing Inputs. <br /></td></tr>
<tr class="separator:aba89e7c2abc95957e26ed4741d2ef5af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b45d3ca0bfa7a3851aae46c2dee8b69" id="r_a7b45d3ca0bfa7a3851aae46c2dee8b69"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a7b45d3ca0bfa7a3851aae46c2dee8b69">spent_outputs</a> (self)</td></tr>
<tr class="memdesc:a7b45d3ca0bfa7a3851aae46c2dee8b69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tuple of :obj:<code>dict</code>: Inputs of this transaction. <br /></td></tr>
<tr class="separator:a7b45d3ca0bfa7a3851aae46c2dee8b69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34ea8af38721a6873df4a2baf3e8cb93" id="r_a34ea8af38721a6873df4a2baf3e8cb93"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a34ea8af38721a6873df4a2baf3e8cb93">to_dict</a> (self)</td></tr>
<tr class="memdesc:a34ea8af38721a6873df4a2baf3e8cb93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transforms the object to a Python dictionary. <br /></td></tr>
<tr class="separator:a34ea8af38721a6873df4a2baf3e8cb93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7dea5142bef07d9cc2a77df4057b603c" id="r_a7dea5142bef07d9cc2a77df4057b603c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a7dea5142bef07d9cc2a77df4057b603c">to_hash</a> (self)</td></tr>
<tr class="separator:a7dea5142bef07d9cc2a77df4057b603c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ecae6982eff73380a1e9d9da8d8a669" id="r_a5ecae6982eff73380a1e9d9da8d8a669"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a5ecae6982eff73380a1e9d9da8d8a669">to_inputs</a> (self, indices=None)</td></tr>
<tr class="memdesc:a5ecae6982eff73380a1e9d9da8d8a669"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a Transaction's outputs to spendable inputs. <br /></td></tr>
<tr class="separator:a5ecae6982eff73380a1e9d9da8d8a669"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea9f07d7bdc5f32cb2efeb65b75a1067" id="r_aea9f07d7bdc5f32cb2efeb65b75a1067"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#aea9f07d7bdc5f32cb2efeb65b75a1067">transfer</a> (cls, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#afde3b66b6b41bd008469f366fa756e54">inputs</a>, recipients, asset_id, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a9cfcb724bbf4bae5f97bc17cf58cf522">metadata</a>=None)</td></tr>
<tr class="memdesc:aea9f07d7bdc5f32cb2efeb65b75a1067"><td class="mdescLeft">&#160;</td><td class="mdescRight">A simple way to generate a <code>TRANSFER</code> transaction. <br /></td></tr>
<tr class="separator:aea9f07d7bdc5f32cb2efeb65b75a1067"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c18ab06152fd838e16b16e1c363c323" id="r_a2c18ab06152fd838e16b16e1c363c323"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a2c18ab06152fd838e16b16e1c363c323">unspent_outputs</a> (self)</td></tr>
<tr class="memdesc:a2c18ab06152fd838e16b16e1c363c323"><td class="mdescLeft">&#160;</td><td class="mdescRight">UnspentOutput: The outputs of this transaction, in a data structure containing relevant information for storing them in a UTXO set, and performing validation. <br /></td></tr>
<tr class="separator:a2c18ab06152fd838e16b16e1c363c323"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5774ab186d9abafb72aaa5a17e501c6e" id="r_a5774ab186d9abafb72aaa5a17e501c6e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a5774ab186d9abafb72aaa5a17e501c6e">validate_schema</a> (cls, tx)</td></tr>
<tr class="separator:a5774ab186d9abafb72aaa5a17e501c6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643c275c4cf66a8368f92bbc8d13b2cb" id="r_a643c275c4cf66a8368f92bbc8d13b2cb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a643c275c4cf66a8368f92bbc8d13b2cb">validate_transfer_inputs</a> (self, resdb, current_transactions=[])</td></tr>
<tr class="separator:a643c275c4cf66a8368f92bbc8d13b2cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:abddfb1992a307c576f4e4111dd83b26f" id="r_abddfb1992a307c576f4e4111dd83b26f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#abddfb1992a307c576f4e4111dd83b26f">get_asset_id</a> (transactions)</td></tr>
<tr class="memdesc:abddfb1992a307c576f4e4111dd83b26f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the asset id from a list of :class:<code>~.Transactions</code>. <br /></td></tr>
<tr class="separator:abddfb1992a307c576f4e4111dd83b26f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af67cd34f82736ec2e9c70d0977867621" id="r_af67cd34f82736ec2e9c70d0977867621"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#af67cd34f82736ec2e9c70d0977867621">register_type</a> (tx_type, tx_class)</td></tr>
<tr class="separator:af67cd34f82736ec2e9c70d0977867621"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80502e77ddb50199123957457810df72" id="r_a80502e77ddb50199123957457810df72"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a80502e77ddb50199123957457810df72">validate_id</a> (tx_body)</td></tr>
<tr class="memdesc:a80502e77ddb50199123957457810df72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validate the transaction ID of a transaction. <br /></td></tr>
<tr class="separator:a80502e77ddb50199123957457810df72"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a132fe4f7d81980f1e0f4316d4c6f2f35" id="r_a132fe4f7d81980f1e0f4316d4c6f2f35"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a132fe4f7d81980f1e0f4316d4c6f2f35">asset</a></td></tr>
<tr class="separator:a132fe4f7d81980f1e0f4316d4c6f2f35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a953f73df78d66c15d03328d5d077a171" id="r_a953f73df78d66c15d03328d5d077a171"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a953f73df78d66c15d03328d5d077a171">CREATE</a></td></tr>
<tr class="separator:a953f73df78d66c15d03328d5d077a171"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf2488b95c97e0378c9bf49de3b50f28" id="r_acf2488b95c97e0378c9bf49de3b50f28"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#acf2488b95c97e0378c9bf49de3b50f28">id</a></td></tr>
<tr class="separator:acf2488b95c97e0378c9bf49de3b50f28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afde3b66b6b41bd008469f366fa756e54" id="r_afde3b66b6b41bd008469f366fa756e54"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#afde3b66b6b41bd008469f366fa756e54">inputs</a></td></tr>
<tr class="separator:afde3b66b6b41bd008469f366fa756e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cfcb724bbf4bae5f97bc17cf58cf522" id="r_a9cfcb724bbf4bae5f97bc17cf58cf522"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a9cfcb724bbf4bae5f97bc17cf58cf522">metadata</a></td></tr>
<tr class="separator:a9cfcb724bbf4bae5f97bc17cf58cf522"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad34e7fb3c33543e9f3a1e48486fa7692" id="r_ad34e7fb3c33543e9f3a1e48486fa7692"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ad34e7fb3c33543e9f3a1e48486fa7692">operation</a></td></tr>
<tr class="separator:ad34e7fb3c33543e9f3a1e48486fa7692"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8d743b78404b120589eca8c77c1c2a9" id="r_af8d743b78404b120589eca8c77c1c2a9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#af8d743b78404b120589eca8c77c1c2a9">outputs</a></td></tr>
<tr class="separator:af8d743b78404b120589eca8c77c1c2a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8e2f1d90a61371a889bfefc9139f9bd" id="r_ad8e2f1d90a61371a889bfefc9139f9bd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ad8e2f1d90a61371a889bfefc9139f9bd">TRANSFER</a></td></tr>
<tr class="separator:ad8e2f1d90a61371a889bfefc9139f9bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c7a521b8f1a0769c09bfa4a1fca7dab" id="r_a4c7a521b8f1a0769c09bfa4a1fca7dab"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a4c7a521b8f1a0769c09bfa4a1fca7dab">version</a></td></tr>
<tr class="separator:a4c7a521b8f1a0769c09bfa4a1fca7dab"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a67d1335c613eb222dda6cca85a8ba7cb" id="r_a67d1335c613eb222dda6cca85a8ba7cb"><td class="memItemLeft" align="right" valign="top">tuple&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a67d1335c613eb222dda6cca85a8ba7cb">ALLOWED_OPERATIONS</a> = (<a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a63245d876a51e2f65c8fae73c399d481">CREATE</a>, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a073a8d88e47cb9260c5f5fef822f1cf8">TRANSFER</a>)</td></tr>
<tr class="separator:a67d1335c613eb222dda6cca85a8ba7cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63245d876a51e2f65c8fae73c399d481" id="r_a63245d876a51e2f65c8fae73c399d481"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a63245d876a51e2f65c8fae73c399d481">CREATE</a> = &quot;CREATE&quot;</td></tr>
<tr class="separator:a63245d876a51e2f65c8fae73c399d481"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a073a8d88e47cb9260c5f5fef822f1cf8" id="r_a073a8d88e47cb9260c5f5fef822f1cf8"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a073a8d88e47cb9260c5f5fef822f1cf8">TRANSFER</a> = &quot;TRANSFER&quot;</td></tr>
<tr class="separator:a073a8d88e47cb9260c5f5fef822f1cf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5b33a327e391fdaff1c6a05e4c1dd3b" id="r_ab5b33a327e391fdaff1c6a05e4c1dd3b"><td class="memItemLeft" align="right" valign="top">dict&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ab5b33a327e391fdaff1c6a05e4c1dd3b">type_registry</a> = {}</td></tr>
<tr class="separator:ab5b33a327e391fdaff1c6a05e4c1dd3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5eb009c6ad9e10533deb1e5b1b270692" id="r_a5eb009c6ad9e10533deb1e5b1b270692"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a5eb009c6ad9e10533deb1e5b1b270692">VERSION</a> = &quot;2.0&quot;</td></tr>
<tr class="separator:a5eb009c6ad9e10533deb1e5b1b270692"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ad53228f9e14aafbccc1da8b994616299" id="r_ad53228f9e14aafbccc1da8b994616299"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ad53228f9e14aafbccc1da8b994616299">_hash</a> (self)</td></tr>
<tr class="separator:ad53228f9e14aafbccc1da8b994616299"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643df462bed1047f5bb5a768ee0d5b77" id="r_a643df462bed1047f5bb5a768ee0d5b77"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a643df462bed1047f5bb5a768ee0d5b77">_inputs_valid</a> (self, output_condition_uris)</td></tr>
<tr class="memdesc:a643df462bed1047f5bb5a768ee0d5b77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validates an Input against a given set of Outputs. <br /></td></tr>
<tr class="separator:a643df462bed1047f5bb5a768ee0d5b77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05561743b1af6f397e2bbf0fd91280bb" id="r_a05561743b1af6f397e2bbf0fd91280bb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a05561743b1af6f397e2bbf0fd91280bb">_sign_input</a> (cls, input_, message, key_pairs)</td></tr>
<tr class="memdesc:a05561743b1af6f397e2bbf0fd91280bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signs a single Input. <br /></td></tr>
<tr class="separator:a05561743b1af6f397e2bbf0fd91280bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7ad46a0f2ce60022cf0fe9540c76fc5" id="r_ad7ad46a0f2ce60022cf0fe9540c76fc5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ad7ad46a0f2ce60022cf0fe9540c76fc5">_sign_simple_signature_fulfillment</a> (cls, input_, message, key_pairs)</td></tr>
<tr class="memdesc:ad7ad46a0f2ce60022cf0fe9540c76fc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signs a Ed25519Fulfillment. <br /></td></tr>
<tr class="separator:ad7ad46a0f2ce60022cf0fe9540c76fc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac75d89367fd77081757b11ee258290e5" id="r_ac75d89367fd77081757b11ee258290e5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ac75d89367fd77081757b11ee258290e5">_sign_threshold_signature_fulfillment</a> (cls, input_, message, key_pairs)</td></tr>
<tr class="memdesc:ac75d89367fd77081757b11ee258290e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signs a ThresholdSha256. <br /></td></tr>
<tr class="separator:ac75d89367fd77081757b11ee258290e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-static-methods" name="pro-static-methods"></a>
Static Protected Member Functions</h2></td></tr>
<tr class="memitem:a775e2bad569b4b560f2796127f380e80" id="r_a775e2bad569b4b560f2796127f380e80"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a775e2bad569b4b560f2796127f380e80">_input_valid</a> (input_, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#ad34e7fb3c33543e9f3a1e48486fa7692">operation</a>, message, output_condition_uri=None)</td></tr>
<tr class="memdesc:a775e2bad569b4b560f2796127f380e80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validates a single Input against a single Output. <br /></td></tr>
<tr class="separator:a775e2bad569b4b560f2796127f380e80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67bcaf4f3a0aa5d64c1572423b870aac" id="r_a67bcaf4f3a0aa5d64c1572423b870aac"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a67bcaf4f3a0aa5d64c1572423b870aac">_remove_signatures</a> (tx_dict)</td></tr>
<tr class="memdesc:a67bcaf4f3a0aa5d64c1572423b870aac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Takes a Transaction dictionary and removes all signatures. <br /></td></tr>
<tr class="separator:a67bcaf4f3a0aa5d64c1572423b870aac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97d7feafe2fd69bf19c3317b5c770852" id="r_a97d7feafe2fd69bf19c3317b5c770852"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a97d7feafe2fd69bf19c3317b5c770852">_to_hash</a> (value)</td></tr>
<tr class="separator:a97d7feafe2fd69bf19c3317b5c770852"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e4815d4b7c569724cf03b37c25ff6af" id="r_a1e4815d4b7c569724cf03b37c25ff6af"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a1e4815d4b7c569724cf03b37c25ff6af">_to_str</a> (value)</td></tr>
<tr class="separator:a1e4815d4b7c569724cf03b37c25ff6af"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a31c762d0b9450bc5a5d722984d098a7b" id="r_a31c762d0b9450bc5a5d722984d098a7b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a31c762d0b9450bc5a5d722984d098a7b">_asset_id</a></td></tr>
<tr class="separator:a31c762d0b9450bc5a5d722984d098a7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1313b5b76f38d461c99c9a42b437f74" id="r_aa1313b5b76f38d461c99c9a42b437f74"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#aa1313b5b76f38d461c99c9a42b437f74">_id</a></td></tr>
<tr class="separator:aa1313b5b76f38d461c99c9a42b437f74"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A Transaction is used to create and transfer assets. </p>
<p>Note: For adding Inputs and Outputs, this class provides methods to do so. Attributes: operation (str): Defines the operation of the Transaction. inputs (:obj:<code>list</code> of :class:<code>~resdb. transaction.Input</code>, optional): Define the assets to spend. outputs (:obj:<code>list</code> of :class:<code>~resdb. transaction.Output</code>, optional): Define the assets to lock. asset (dict): Asset payload for this Transaction. <code>CREATE</code> Transactions require a dict with a <code>data</code> property while <code>TRANSFER</code> Transactions require a dict with a <code>id</code> property. metadata (dict): Metadata to be stored along with the Transaction. version (string): Defines the version number of a Transaction. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a02dbc351ffad3c948deeea2971ba7407" name="a02dbc351ffad3c948deeea2971ba7407"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02dbc351ffad3c948deeea2971ba7407">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">__init__ </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>operation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>asset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>inputs</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>outputs</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>metadata</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>version</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>hash_id</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The constructor allows to create a customizable Transaction. </p>
<p>Note: When no <code>version</code> is provided, one is being generated by this method.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">operation</td><td>(str): Defines the operation of the Transaction. </td></tr>
<tr><td class="paramname">asset</td><td>(dict): Asset payload for this Transaction. </td></tr>
<tr><td class="paramname">inputs</td><td>(:obj:<code>list</code> of :class:<code>~resdb.transaction.Input</code>, optional):Define the assets to </td></tr>
<tr><td class="paramname">outputs</td><td>(:obj:<code>list</code> of :class:<code>~resdb.transaction.Output</code>, optional):Define the assets to lock. </td></tr>
<tr><td class="paramname">metadata</td><td>(dict): Metadata to be stored along with the Transaction. </td></tr>
<tr><td class="paramname">version</td><td>(string): Defines the version number of a Transaction. </td></tr>
<tr><td class="paramname">hash_id</td><td>(string): Hash id of the transaction. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a909a2bc6a3c96fc53d3ae93305e81486" name="a909a2bc6a3c96fc53d3ae93305e81486"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a909a2bc6a3c96fc53d3ae93305e81486">&#9670;&#160;</a></span>__eq__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">__eq__ </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>other</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a40b37c981a056437fd94276341c63fe8" name="a40b37c981a056437fd94276341c63fe8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40b37c981a056437fd94276341c63fe8">&#9670;&#160;</a></span>__str__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">__str__ </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad53228f9e14aafbccc1da8b994616299" name="ad53228f9e14aafbccc1da8b994616299"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad53228f9e14aafbccc1da8b994616299">&#9670;&#160;</a></span>_hash()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_hash </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a775e2bad569b4b560f2796127f380e80" name="a775e2bad569b4b560f2796127f380e80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a775e2bad569b4b560f2796127f380e80">&#9670;&#160;</a></span>_input_valid()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_input_valid </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>input_</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>operation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>output_condition_uri</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Validates a single Input against a single Output. </p>
<p>Note: In case of a <code>CREATE</code> Transaction, this method does not validate against <code>output_condition_uri</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">input_</td><td>(:class:<code>~resdb.transaction.Input</code>) The Input to be signed. </td></tr>
<tr><td class="paramname">operation</td><td>(str): The type of Transaction. </td></tr>
<tr><td class="paramname">message</td><td>(str): The fulfillment message. </td></tr>
<tr><td class="paramname">output_condition_uri</td><td>(str, optional): An Output to check the Input against. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If the Input is valid. </dd></dl>
</div>
</div>
<a id="a643df462bed1047f5bb5a768ee0d5b77" name="a643df462bed1047f5bb5a768ee0d5b77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a643df462bed1047f5bb5a768ee0d5b77">&#9670;&#160;</a></span>_inputs_valid()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_inputs_valid </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>output_condition_uris</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Validates an Input against a given set of Outputs. </p>
<p>Note: The number of <code>output_condition_uris</code> must be equal to the number of Inputs a Transaction has.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">output_condition_uris</td><td>(:obj:<code>list</code> of :obj:<code>str</code>): A list of Outputs to check the Inputs against. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If all Outputs are valid. </dd></dl>
</div>
</div>
<a id="a67bcaf4f3a0aa5d64c1572423b870aac" name="a67bcaf4f3a0aa5d64c1572423b870aac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67bcaf4f3a0aa5d64c1572423b870aac">&#9670;&#160;</a></span>_remove_signatures()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_remove_signatures </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>tx_dict</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Takes a Transaction dictionary and removes all signatures. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">(dict)</td><td>tx_dict The Transaction to remove all signatures from. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>dict </dd></dl>
</div>
</div>
<a id="a05561743b1af6f397e2bbf0fd91280bb" name="a05561743b1af6f397e2bbf0fd91280bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05561743b1af6f397e2bbf0fd91280bb">&#9670;&#160;</a></span>_sign_input()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_sign_input </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>cls</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>input_</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>key_pairs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Signs a single Input. </p>
<p>Note: This method works only for the following Cryptoconditions currently:</p><ul>
<li>Ed25519Fulfillment</li>
<li>ThresholdSha256.</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">input_</td><td>(:class:<code>~resdb.transaction.Input</code>) The Input to be signed. </td></tr>
<tr><td class="paramname">message</td><td>(str): The message to be signed </td></tr>
<tr><td class="paramname">key_pairs</td><td>(dict): The keys to sign the Transaction with. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad7ad46a0f2ce60022cf0fe9540c76fc5" name="ad7ad46a0f2ce60022cf0fe9540c76fc5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7ad46a0f2ce60022cf0fe9540c76fc5">&#9670;&#160;</a></span>_sign_simple_signature_fulfillment()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_sign_simple_signature_fulfillment </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>cls</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>input_</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>key_pairs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Signs a Ed25519Fulfillment. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">input_</td><td>(:class:<code>~resdb.transaction.Input</code>) The Input to be signed. </td></tr>
<tr><td class="paramname">message</td><td>(str): The message to be signed </td></tr>
<tr><td class="paramname">key_pairs</td><td>(dict): The keys to sign the Transaction with. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac75d89367fd77081757b11ee258290e5" name="ac75d89367fd77081757b11ee258290e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac75d89367fd77081757b11ee258290e5">&#9670;&#160;</a></span>_sign_threshold_signature_fulfillment()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_sign_threshold_signature_fulfillment </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>cls</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>input_</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>key_pairs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Signs a ThresholdSha256. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">input_</td><td>(:class:<code>~resdb.transaction.Input</code>) The Input to be signed. </td></tr>
<tr><td class="paramname">message</td><td>(str): The message to be signed </td></tr>
<tr><td class="paramname">key_pairs</td><td>(dict): The keys to sign the Transaction with. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a97d7feafe2fd69bf19c3317b5c770852" name="a97d7feafe2fd69bf19c3317b5c770852"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97d7feafe2fd69bf19c3317b5c770852">&#9670;&#160;</a></span>_to_hash()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_to_hash </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1e4815d4b7c569724cf03b37c25ff6af" name="a1e4815d4b7c569724cf03b37c25ff6af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e4815d4b7c569724cf03b37c25ff6af">&#9670;&#160;</a></span>_to_str()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_to_str </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac54fec6235c176d3c1322c5602fe0aaa" name="ac54fec6235c176d3c1322c5602fe0aaa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac54fec6235c176d3c1322c5602fe0aaa">&#9670;&#160;</a></span>add_input()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">add_input </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>input_</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds an input to a Transaction's list of inputs. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">input_</td><td>(:class:<code>~resdb.transaction. Input</code>): An Input to be added to the Transaction. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad083ed5c99644b6abb7266727b86db38" name="ad083ed5c99644b6abb7266727b86db38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad083ed5c99644b6abb7266727b86db38">&#9670;&#160;</a></span>add_output()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">add_output </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds an output to a Transaction's list of outputs. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">output</td><td>(:class:<code>~resdb.transaction. Output</code>): An Output to be added to the Transaction. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="adbbf28fba72487663332a1602c7424d1" name="adbbf28fba72487663332a1602c7424d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adbbf28fba72487663332a1602c7424d1">&#9670;&#160;</a></span>create()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">create </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>cls</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>tx_signers</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>recipients</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>metadata</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>asset</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A simple way to generate a <code>CREATE</code> transaction. </p>
<p>Note: This method currently supports the following Cryptoconditions use cases:</p><ul>
<li>Ed25519</li>
<li>ThresholdSha256 Additionally, it provides support for the following Resdb use cases:</li>
<li>Multiple inputs and outputs.</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">tx_signers</td><td>(:obj:<code>list</code> of :obj:<code>str</code>): A list of keys that represent the signers of the CREATE Transaction. </td></tr>
<tr><td class="paramname">recipients</td><td>(:obj:<code>list</code> of :obj:<code>tuple</code>): A list of ([keys],amount) that represent the recipients of this Transaction. </td></tr>
<tr><td class="paramname">metadata</td><td>(dict): The metadata to be stored along with the Transaction. </td></tr>
<tr><td class="paramname">asset</td><td>(dict): The metadata associated with the asset that will be created in this Transaction.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>:class:<code>~resdb.transaction.Transaction</code> </dd></dl>
</div>
</div>
<a id="adc3fd145c19b174107cbe5ce79fba6b5" name="adc3fd145c19b174107cbe5ce79fba6b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc3fd145c19b174107cbe5ce79fba6b5">&#9670;&#160;</a></span>from_db()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">from_db </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>cls</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>resdb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>tx_dict_list</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Helper method that reconstructs a transaction dict that was returned from the database. </p>
<p>It checks what asset_id to retrieve, retrieves the asset from the asset table and reconstructs the transaction.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">resdb</td><td>An instance of ResDB used to perform database queries. </td></tr>
<tr><td class="paramname">tx_dict_list</td><td>(:list:<code>dict</code> or :obj:<code>dict</code>): The transaction dict or list of transaction dict as returned from the database.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>:class:<code>~Transaction</code> </dd></dl>
</div>
</div>
<a id="a2ae2ee0315bf7ad47f07ca2bb6a55d1f" name="a2ae2ee0315bf7ad47f07ca2bb6a55d1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ae2ee0315bf7ad47f07ca2bb6a55d1f">&#9670;&#160;</a></span>from_dict()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">from_dict </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>cls</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>tx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>skip_schema_validation</em> = <code>True</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Transforms a Python dictionary to a Transaction object. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">tx_body</td><td>(dict): The Transaction to be transformed. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>:class:<code>~resdb.transaction.Transaction</code> </dd></dl>
</div>
</div>
<a id="abddfb1992a307c576f4e4111dd83b26f" name="abddfb1992a307c576f4e4111dd83b26f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abddfb1992a307c576f4e4111dd83b26f">&#9670;&#160;</a></span>get_asset_id()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">get_asset_id </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>transactions</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the asset id from a list of :class:<code>~.Transactions</code>. </p>
<p>This is useful when we want to check if the multiple inputs of a transaction are related to the same asset id. Args: </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">transactions</td><td>(:obj:<code>list</code> of :class:<code>~resdb.transaction.Transaction</code>): A list of Transactions. Usually input Transactions that should have a matching asset ID. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ID of the asset. </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">If</td><td>the inputs are related to different assets. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aba303485588abb149a4521cde1a38a06" name="aba303485588abb149a4521cde1a38a06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba303485588abb149a4521cde1a38a06">&#9670;&#160;</a></span>id()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">id </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3670b878ca322ec50cdfa87dc516c37b" name="a3670b878ca322ec50cdfa87dc516c37b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3670b878ca322ec50cdfa87dc516c37b">&#9670;&#160;</a></span>inputs_valid()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">inputs_valid </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>outputs</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Validates the Inputs in the Transaction against given Outputs. </p>
<p>Note: Given a <code>CREATE</code> Transaction is passed, dummy values for Outputs are submitted for validation that evaluate parts of the validation-checks to <code>True</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">outputs</td><td>(:obj:<code>list</code> of :class:<code>~resdb. transaction.Output</code>): A list of Outputs to check the Inputs against. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If all Inputs are valid. </dd></dl>
</div>
</div>
<a id="af67cd34f82736ec2e9c70d0977867621" name="af67cd34f82736ec2e9c70d0977867621"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af67cd34f82736ec2e9c70d0977867621">&#9670;&#160;</a></span>register_type()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">register_type </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>tx_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>tx_class</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae6c5425e15f6fa5a565ec73b411e4867" name="ae6c5425e15f6fa5a565ec73b411e4867"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6c5425e15f6fa5a565ec73b411e4867">&#9670;&#160;</a></span>resolve_class()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">resolve_class </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>operation</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>For the given <code>tx</code> based on the <code>operation</code> key return its implementation class. </p>
</div>
</div>
<a id="a1d6865217ba82d666cfbab6efc544b7f" name="a1d6865217ba82d666cfbab6efc544b7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d6865217ba82d666cfbab6efc544b7f">&#9670;&#160;</a></span>serialized()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">serialized </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aba89e7c2abc95957e26ed4741d2ef5af" name="aba89e7c2abc95957e26ed4741d2ef5af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba89e7c2abc95957e26ed4741d2ef5af">&#9670;&#160;</a></span>sign()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">sign </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>private_keys</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fulfills a previous Transaction's Output by signing Inputs. </p>
<p>Note: This method works only for the following Cryptoconditions currently:</p><ul>
<li>Ed25519Fulfillment</li>
<li>ThresholdSha256 Furthermore, note that all keys required to fully sign the Transaction have to be passed to this method. A subset of all will cause this method to fail.</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">private_keys</td><td>(:obj:<code>list</code> of :obj:<code>str</code>): A complete list of all private keys needed to sign all Fulfillments of this Transaction. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>:class:<code>~resdb.transaction.Transaction</code> </dd></dl>
</div>
</div>
<a id="a7b45d3ca0bfa7a3851aae46c2dee8b69" name="a7b45d3ca0bfa7a3851aae46c2dee8b69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b45d3ca0bfa7a3851aae46c2dee8b69">&#9670;&#160;</a></span>spent_outputs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">spent_outputs </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Tuple of :obj:<code>dict</code>: Inputs of this transaction. </p>
<p>Each input is represented as a dictionary containing a transaction id and output index. </p>
</div>
</div>
<a id="a34ea8af38721a6873df4a2baf3e8cb93" name="a34ea8af38721a6873df4a2baf3e8cb93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a34ea8af38721a6873df4a2baf3e8cb93">&#9670;&#160;</a></span>to_dict()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">to_dict </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Transforms the object to a Python dictionary. </p>
<dl class="section return"><dt>Returns</dt><dd>The Transaction as an alternative serialization format. </dd></dl>
</div>
</div>
<a id="a7dea5142bef07d9cc2a77df4057b603c" name="a7dea5142bef07d9cc2a77df4057b603c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7dea5142bef07d9cc2a77df4057b603c">&#9670;&#160;</a></span>to_hash()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">to_hash </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5ecae6982eff73380a1e9d9da8d8a669" name="a5ecae6982eff73380a1e9d9da8d8a669"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ecae6982eff73380a1e9d9da8d8a669">&#9670;&#160;</a></span>to_inputs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">to_inputs </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>indices</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Converts a Transaction's outputs to spendable inputs. </p>
<p>Note: Takes the Transaction's outputs and derives inputs from that can then be passed into <code>Transaction.transfer</code> as <code>inputs</code>. A list of integers can be passed to <code>indices</code> that defines which outputs should be returned as inputs. If no <code>indices</code> are passed (empty list or None) all outputs of the Transaction are returned.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">indices</td><td>(:obj:<code>list</code> of int): Defines which outputs should be returned as inputs. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>:obj:<code>list</code> of :class:<code>~resdb.transaction. Input</code> </dd></dl>
</div>
</div>
<a id="aea9f07d7bdc5f32cb2efeb65b75a1067" name="aea9f07d7bdc5f32cb2efeb65b75a1067"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea9f07d7bdc5f32cb2efeb65b75a1067">&#9670;&#160;</a></span>transfer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">transfer </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>cls</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>inputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>recipients</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>asset_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>metadata</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A simple way to generate a <code>TRANSFER</code> transaction. </p>
<p>Note: Different cases for threshold conditions: Combining multiple <code>inputs</code> with an arbitrary number of <code>recipients</code> can yield interesting cases for the creation of threshold conditions we'd like to support. The following notation is proposed:</p><ol type="1">
<li>The index of a <code>recipient</code> corresponds to the index of an input: e.g. <code>transfer([input1], [a])</code>, means <code>input1</code> would now be owned by user <code>a</code>.</li>
<li><code>recipients</code> can (almost) get arbitrary deeply nested, creating various complex threshold conditions: e.g. <code>transfer([inp1, inp2], [[a, [b, c]], d])</code>, means <code>a</code>'s signature would have a 50% weight on <code>inp1</code> compared to <code>b</code> and <code>c</code> that share 25% of the leftover weight respectively. <code>inp2</code> is owned completely by <code>d</code>.</li>
</ol>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">inputs</td><td>(:obj:<code>list</code> of :class:<code>~resdb.transaction.Input</code>): Converted <code>Output</code>s, intended to be used as inputs in the transfer to generate. </td></tr>
<tr><td class="paramname">recipients</td><td>(:obj:<code>list</code> of :obj:<code>tuple</code>): A list of ([keys],amount) that represent the recipients of this Transaction. </td></tr>
<tr><td class="paramname">asset_id</td><td>(str): The asset ID of the asset to be transferred in this Transaction. </td></tr>
<tr><td class="paramname">metadata</td><td>(dict): Python dictionary to be stored along with the Transaction.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>:class:<code>~resdb.transaction.Transaction</code> </dd></dl>
</div>
</div>
<a id="a2c18ab06152fd838e16b16e1c363c323" name="a2c18ab06152fd838e16b16e1c363c323"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c18ab06152fd838e16b16e1c363c323">&#9670;&#160;</a></span>unspent_outputs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unspent_outputs </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>UnspentOutput: The outputs of this transaction, in a data structure containing relevant information for storing them in a UTXO set, and performing validation. </p>
</div>
</div>
<a id="a80502e77ddb50199123957457810df72" name="a80502e77ddb50199123957457810df72"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80502e77ddb50199123957457810df72">&#9670;&#160;</a></span>validate_id()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">validate_id </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>tx_body</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Validate the transaction ID of a transaction. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">tx_body</td><td>(dict): The Transaction to be transformed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a5774ab186d9abafb72aaa5a17e501c6e" name="a5774ab186d9abafb72aaa5a17e501c6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5774ab186d9abafb72aaa5a17e501c6e">&#9670;&#160;</a></span>validate_schema()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">validate_schema </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>cls</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>tx</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a643c275c4cf66a8368f92bbc8d13b2cb" name="a643c275c4cf66a8368f92bbc8d13b2cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a643c275c4cf66a8368f92bbc8d13b2cb">&#9670;&#160;</a></span>validate_transfer_inputs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">validate_transfer_inputs </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>resdb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>current_transactions</em> = <code>[]</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a31c762d0b9450bc5a5d722984d098a7b" name="a31c762d0b9450bc5a5d722984d098a7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31c762d0b9450bc5a5d722984d098a7b">&#9670;&#160;</a></span>_asset_id</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_asset_id</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa1313b5b76f38d461c99c9a42b437f74" name="aa1313b5b76f38d461c99c9a42b437f74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1313b5b76f38d461c99c9a42b437f74">&#9670;&#160;</a></span>_id</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_id</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a67d1335c613eb222dda6cca85a8ba7cb" name="a67d1335c613eb222dda6cca85a8ba7cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67d1335c613eb222dda6cca85a8ba7cb">&#9670;&#160;</a></span>ALLOWED_OPERATIONS</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">tuple ALLOWED_OPERATIONS = (<a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a63245d876a51e2f65c8fae73c399d481">CREATE</a>, <a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html#a073a8d88e47cb9260c5f5fef822f1cf8">TRANSFER</a>)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a132fe4f7d81980f1e0f4316d4c6f2f35" name="a132fe4f7d81980f1e0f4316d4c6f2f35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a132fe4f7d81980f1e0f4316d4c6f2f35">&#9670;&#160;</a></span>asset</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">asset</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a63245d876a51e2f65c8fae73c399d481" name="a63245d876a51e2f65c8fae73c399d481"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63245d876a51e2f65c8fae73c399d481">&#9670;&#160;</a></span>CREATE <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">str CREATE = &quot;CREATE&quot;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a953f73df78d66c15d03328d5d077a171" name="a953f73df78d66c15d03328d5d077a171"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a953f73df78d66c15d03328d5d077a171">&#9670;&#160;</a></span>CREATE <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">CREATE</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acf2488b95c97e0378c9bf49de3b50f28" name="acf2488b95c97e0378c9bf49de3b50f28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf2488b95c97e0378c9bf49de3b50f28">&#9670;&#160;</a></span>id</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">id</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afde3b66b6b41bd008469f366fa756e54" name="afde3b66b6b41bd008469f366fa756e54"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afde3b66b6b41bd008469f366fa756e54">&#9670;&#160;</a></span>inputs</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">inputs</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9cfcb724bbf4bae5f97bc17cf58cf522" name="a9cfcb724bbf4bae5f97bc17cf58cf522"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cfcb724bbf4bae5f97bc17cf58cf522">&#9670;&#160;</a></span>metadata</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">metadata</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad34e7fb3c33543e9f3a1e48486fa7692" name="ad34e7fb3c33543e9f3a1e48486fa7692"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad34e7fb3c33543e9f3a1e48486fa7692">&#9670;&#160;</a></span>operation</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">operation</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af8d743b78404b120589eca8c77c1c2a9" name="af8d743b78404b120589eca8c77c1c2a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af8d743b78404b120589eca8c77c1c2a9">&#9670;&#160;</a></span>outputs</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">outputs</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a073a8d88e47cb9260c5f5fef822f1cf8" name="a073a8d88e47cb9260c5f5fef822f1cf8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a073a8d88e47cb9260c5f5fef822f1cf8">&#9670;&#160;</a></span>TRANSFER <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">str TRANSFER = &quot;TRANSFER&quot;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad8e2f1d90a61371a889bfefc9139f9bd" name="ad8e2f1d90a61371a889bfefc9139f9bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad8e2f1d90a61371a889bfefc9139f9bd">&#9670;&#160;</a></span>TRANSFER <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">TRANSFER</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab5b33a327e391fdaff1c6a05e4c1dd3b" name="ab5b33a327e391fdaff1c6a05e4c1dd3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5b33a327e391fdaff1c6a05e4c1dd3b">&#9670;&#160;</a></span>type_registry</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">dict type_registry = {}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5eb009c6ad9e10533deb1e5b1b270692" name="a5eb009c6ad9e10533deb1e5b1b270692"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5eb009c6ad9e10533deb1e5b1b270692">&#9670;&#160;</a></span>VERSION</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">str VERSION = &quot;2.0&quot;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4c7a521b8f1a0769c09bfa4a1fca7dab" name="a4c7a521b8f1a0769c09bfa4a1fca7dab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c7a521b8f1a0769c09bfa4a1fca7dab">&#9670;&#160;</a></span>version</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">version</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>/github/workspace/resdb_driver/<a class="el" href="resdb__driver_2transaction_8py.html">transaction.py</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceresdb__driver.html">resdb_driver</a></li><li class="navelem"><a class="el" href="namespaceresdb__driver_1_1transaction.html">transaction</a></li><li class="navelem"><a class="el" href="classresdb__driver_1_1transaction_1_1Transaction.html">Transaction</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
</ul>
</div>
</body>
</html>