evmc/evmc_8h.html
Documentation Bot 9b3a656372 Update docs
2020-01-07 15:35:10 +00:00

304 lines
37 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>EVMC: include/evmc/evmc.h File 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>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EVMC
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',false,false,'search.php','Search');
});
</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">
$(document).ready(function(){initNavTree('evmc_8h.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">evmc.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>EVMC: Ethereum Client-VM Connector API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;stdbool.h&gt;</code><br />
<code>#include &lt;stddef.h&gt;</code><br />
<code>#include &lt;stdint.h&gt;</code><br />
</div>
<p><a href="evmc_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structevmc__bytes32.html">evmc_bytes32</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The fixed size array of 32 bytes. <a href="structevmc__bytes32.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structevmc__address.html">evmc_address</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Big-endian 160-bit hash suitable for keeping an Ethereum address. <a href="structevmc__address.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structevmc__message.html">evmc_message</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The message describing an EVM call, including a zero-depth calls from a transaction origin. <a href="structevmc__message.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structevmc__tx__context.html">evmc_tx_context</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The transaction and block data for execution. <a href="structevmc__tx__context.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structevmc__result.html">evmc_result</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The EVM code execution result. <a href="structevmc__result.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structevmc__host__interface.html">evmc_host_interface</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The Host interface. <a href="structevmc__host__interface.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structevmc__vm.html">evmc_vm</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The VM instance. <a href="structevmc__vm.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga67a54f0ca13bf83f59845e13e0caa3de"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structevmc__bytes32.html">evmc_bytes32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga67a54f0ca13bf83f59845e13e0caa3de">evmc_bytes32</a></td></tr>
<tr class="memdesc:ga67a54f0ca13bf83f59845e13e0caa3de"><td class="mdescLeft">&#160;</td><td class="mdescRight">The fixed size array of 32 bytes. <a href="group__EVMC.html#ga67a54f0ca13bf83f59845e13e0caa3de">More...</a><br /></td></tr>
<tr class="separator:ga67a54f0ca13bf83f59845e13e0caa3de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga260738d59f9a23d039dc7a290e0c0a3b"><td class="memItemLeft" align="right" valign="top">
typedef struct <a class="el" href="structevmc__bytes32.html">evmc_bytes32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga260738d59f9a23d039dc7a290e0c0a3b">evmc_uint256be</a></td></tr>
<tr class="memdesc:ga260738d59f9a23d039dc7a290e0c0a3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The alias for <a class="el" href="structevmc__bytes32.html" title="The fixed size array of 32 bytes. ">evmc_bytes32</a> to represent a big-endian 256-bit integer. <br /></td></tr>
<tr class="separator:ga260738d59f9a23d039dc7a290e0c0a3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa6ab398cceb37b9c5a24be4d3a1b27e4"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structevmc__address.html">evmc_address</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#gaa6ab398cceb37b9c5a24be4d3a1b27e4">evmc_address</a></td></tr>
<tr class="memdesc:gaa6ab398cceb37b9c5a24be4d3a1b27e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Big-endian 160-bit hash suitable for keeping an Ethereum address. <a href="group__EVMC.html#gaa6ab398cceb37b9c5a24be4d3a1b27e4">More...</a><br /></td></tr>
<tr class="separator:gaa6ab398cceb37b9c5a24be4d3a1b27e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7b403c029b5b9ad627ffafb8c41ac84b"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structevmc__tx__context.html">evmc_tx_context</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga7b403c029b5b9ad627ffafb8c41ac84b">evmc_get_tx_context_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context)</td></tr>
<tr class="memdesc:ga7b403c029b5b9ad627ffafb8c41ac84b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get transaction context callback function. <a href="group__EVMC.html#ga7b403c029b5b9ad627ffafb8c41ac84b">More...</a><br /></td></tr>
<tr class="separator:ga7b403c029b5b9ad627ffafb8c41ac84b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga97c2981658d797d3031720a54740a4b3"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structevmc__bytes32.html">evmc_bytes32</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga97c2981658d797d3031720a54740a4b3">evmc_get_block_hash_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, int64_t number)</td></tr>
<tr class="memdesc:ga97c2981658d797d3031720a54740a4b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get block hash callback function. <a href="group__EVMC.html#ga97c2981658d797d3031720a54740a4b3">More...</a><br /></td></tr>
<tr class="separator:ga97c2981658d797d3031720a54740a4b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga297c7c7ca966c82296a54683143157b1"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga297c7c7ca966c82296a54683143157b1">evmc_release_result_fn</a>) (const struct <a class="el" href="structevmc__result.html">evmc_result</a> *result)</td></tr>
<tr class="memdesc:ga297c7c7ca966c82296a54683143157b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Releases resources assigned to an execution result. <a href="group__EVMC.html#ga297c7c7ca966c82296a54683143157b1">More...</a><br /></td></tr>
<tr class="separator:ga297c7c7ca966c82296a54683143157b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4c5464305402bf2a10d94bf2d828d82b"><td class="memItemLeft" align="right" valign="top">typedef bool(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga4c5464305402bf2a10d94bf2d828d82b">evmc_account_exists_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, const <a class="el" href="structevmc__address.html">evmc_address</a> *address)</td></tr>
<tr class="memdesc:ga4c5464305402bf2a10d94bf2d828d82b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check account existence callback function. <a href="group__EVMC.html#ga4c5464305402bf2a10d94bf2d828d82b">More...</a><br /></td></tr>
<tr class="separator:ga4c5464305402bf2a10d94bf2d828d82b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7aff77bf67e8fad5819807b8aafff7cb"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structevmc__bytes32.html">evmc_bytes32</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga7aff77bf67e8fad5819807b8aafff7cb">evmc_get_storage_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, const <a class="el" href="structevmc__address.html">evmc_address</a> *address, const <a class="el" href="structevmc__bytes32.html">evmc_bytes32</a> *key)</td></tr>
<tr class="memdesc:ga7aff77bf67e8fad5819807b8aafff7cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get storage callback function. <a href="group__EVMC.html#ga7aff77bf67e8fad5819807b8aafff7cb">More...</a><br /></td></tr>
<tr class="separator:ga7aff77bf67e8fad5819807b8aafff7cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf7481ac7c3f1071d5d4d8256d0687e83"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__EVMC.html#gae012fd6b8e5c23806b507c2d3e9fb1aa">evmc_storage_status</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#gaf7481ac7c3f1071d5d4d8256d0687e83">evmc_set_storage_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, const <a class="el" href="structevmc__address.html">evmc_address</a> *address, const <a class="el" href="structevmc__bytes32.html">evmc_bytes32</a> *key, const <a class="el" href="structevmc__bytes32.html">evmc_bytes32</a> *value)</td></tr>
<tr class="memdesc:gaf7481ac7c3f1071d5d4d8256d0687e83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set storage callback function. <a href="group__EVMC.html#gaf7481ac7c3f1071d5d4d8256d0687e83">More...</a><br /></td></tr>
<tr class="separator:gaf7481ac7c3f1071d5d4d8256d0687e83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5208ee08734b69bb0a28793f0ecfbc48"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__EVMC.html#ga260738d59f9a23d039dc7a290e0c0a3b">evmc_uint256be</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga5208ee08734b69bb0a28793f0ecfbc48">evmc_get_balance_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, const <a class="el" href="structevmc__address.html">evmc_address</a> *address)</td></tr>
<tr class="memdesc:ga5208ee08734b69bb0a28793f0ecfbc48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get balance callback function. <a href="group__EVMC.html#ga5208ee08734b69bb0a28793f0ecfbc48">More...</a><br /></td></tr>
<tr class="separator:ga5208ee08734b69bb0a28793f0ecfbc48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga38e37a3a70dec828829cccb461e99de2"><td class="memItemLeft" align="right" valign="top">typedef size_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga38e37a3a70dec828829cccb461e99de2">evmc_get_code_size_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, const <a class="el" href="structevmc__address.html">evmc_address</a> *address)</td></tr>
<tr class="memdesc:ga38e37a3a70dec828829cccb461e99de2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get code size callback function. <a href="group__EVMC.html#ga38e37a3a70dec828829cccb461e99de2">More...</a><br /></td></tr>
<tr class="separator:ga38e37a3a70dec828829cccb461e99de2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7971754ea6e237ffb9e9b7ab102fa16e"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structevmc__bytes32.html">evmc_bytes32</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga7971754ea6e237ffb9e9b7ab102fa16e">evmc_get_code_hash_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, const <a class="el" href="structevmc__address.html">evmc_address</a> *address)</td></tr>
<tr class="memdesc:ga7971754ea6e237ffb9e9b7ab102fa16e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get code hash callback function. <a href="group__EVMC.html#ga7971754ea6e237ffb9e9b7ab102fa16e">More...</a><br /></td></tr>
<tr class="separator:ga7971754ea6e237ffb9e9b7ab102fa16e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7dc696d1491951200ac5dc4f852a4499"><td class="memItemLeft" align="right" valign="top">typedef size_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga7dc696d1491951200ac5dc4f852a4499">evmc_copy_code_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, const <a class="el" href="structevmc__address.html">evmc_address</a> *address, size_t code_offset, uint8_t *buffer_data, size_t buffer_size)</td></tr>
<tr class="memdesc:ga7dc696d1491951200ac5dc4f852a4499"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy code callback function. <a href="group__EVMC.html#ga7dc696d1491951200ac5dc4f852a4499">More...</a><br /></td></tr>
<tr class="separator:ga7dc696d1491951200ac5dc4f852a4499"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga72021774388d535436b0c532f8c6de6c"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga72021774388d535436b0c532f8c6de6c">evmc_selfdestruct_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, const <a class="el" href="structevmc__address.html">evmc_address</a> *address, const <a class="el" href="structevmc__address.html">evmc_address</a> *beneficiary)</td></tr>
<tr class="memdesc:ga72021774388d535436b0c532f8c6de6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Selfdestruct callback function. <a href="group__EVMC.html#ga72021774388d535436b0c532f8c6de6c">More...</a><br /></td></tr>
<tr class="separator:ga72021774388d535436b0c532f8c6de6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaab96621b67d653758b3da15c2b596938"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#gaab96621b67d653758b3da15c2b596938">evmc_emit_log_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, const <a class="el" href="structevmc__address.html">evmc_address</a> *address, const uint8_t *data, size_t data_size, const <a class="el" href="structevmc__bytes32.html">evmc_bytes32</a> topics[], size_t topics_count)</td></tr>
<tr class="memdesc:gaab96621b67d653758b3da15c2b596938"><td class="mdescLeft">&#160;</td><td class="mdescRight">Log callback function. <a href="group__EVMC.html#gaab96621b67d653758b3da15c2b596938">More...</a><br /></td></tr>
<tr class="separator:gaab96621b67d653758b3da15c2b596938"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga54f569386b52be6eee15ca9e14ed1ef8"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structevmc__result.html">evmc_result</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga54f569386b52be6eee15ca9e14ed1ef8">evmc_call_fn</a>) (struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, const struct <a class="el" href="structevmc__message.html">evmc_message</a> *msg)</td></tr>
<tr class="memdesc:ga54f569386b52be6eee15ca9e14ed1ef8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to the callback function supporting EVM calls. <a href="group__EVMC.html#ga54f569386b52be6eee15ca9e14ed1ef8">More...</a><br /></td></tr>
<tr class="separator:ga54f569386b52be6eee15ca9e14ed1ef8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1f54475fc7dc20a0c4d370272e39d755"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga1f54475fc7dc20a0c4d370272e39d755">evmc_destroy_fn</a>) (struct <a class="el" href="structevmc__vm.html">evmc_vm</a> *vm)</td></tr>
<tr class="memdesc:ga1f54475fc7dc20a0c4d370272e39d755"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the VM instance. <a href="group__EVMC.html#ga1f54475fc7dc20a0c4d370272e39d755">More...</a><br /></td></tr>
<tr class="separator:ga1f54475fc7dc20a0c4d370272e39d755"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5531cee5b83d76c71b06475454f4633b"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__EVMC.html#ga28d9f527bda67277bccccc100e32260a">evmc_set_option_result</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga5531cee5b83d76c71b06475454f4633b">evmc_set_option_fn</a>) (struct <a class="el" href="structevmc__vm.html">evmc_vm</a> *vm, char const *name, char const *value)</td></tr>
<tr class="memdesc:ga5531cee5b83d76c71b06475454f4633b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the VM instance. <a href="group__EVMC.html#ga5531cee5b83d76c71b06475454f4633b">More...</a><br /></td></tr>
<tr class="separator:ga5531cee5b83d76c71b06475454f4633b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaed9a4ab5609b55c5e3272d6d37d84ff7"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structevmc__result.html">evmc_result</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#gaed9a4ab5609b55c5e3272d6d37d84ff7">evmc_execute_fn</a>) (struct <a class="el" href="structevmc__vm.html">evmc_vm</a> *vm, const struct <a class="el" href="structevmc__host__interface.html">evmc_host_interface</a> *host, struct <a class="el" href="structevmc__host__context.html">evmc_host_context</a> *context, enum <a class="el" href="group__EVMC.html#gae5759b1590071966ccf6a505b52a0ef7">evmc_revision</a> rev, const struct <a class="el" href="structevmc__message.html">evmc_message</a> *msg, uint8_t const *code, size_t code_size)</td></tr>
<tr class="memdesc:gaed9a4ab5609b55c5e3272d6d37d84ff7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes the given code using the input from the message. <a href="group__EVMC.html#gaed9a4ab5609b55c5e3272d6d37d84ff7">More...</a><br /></td></tr>
<tr class="separator:gaed9a4ab5609b55c5e3272d6d37d84ff7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga714bc8ca946adc759403fe072bdd2aa0"><td class="memItemLeft" align="right" valign="top">typedef uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga714bc8ca946adc759403fe072bdd2aa0">evmc_capabilities_flagset</a></td></tr>
<tr class="memdesc:ga714bc8ca946adc759403fe072bdd2aa0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alias for unsigned integer representing a set of bit flags of EVMC capabilities. <a href="group__EVMC.html#ga714bc8ca946adc759403fe072bdd2aa0">More...</a><br /></td></tr>
<tr class="separator:ga714bc8ca946adc759403fe072bdd2aa0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9bac25459c5a09d42606e7bd9320445c"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__EVMC.html#ga714bc8ca946adc759403fe072bdd2aa0">evmc_capabilities_flagset</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga9bac25459c5a09d42606e7bd9320445c">evmc_get_capabilities_fn</a>) (struct <a class="el" href="structevmc__vm.html">evmc_vm</a> *vm)</td></tr>
<tr class="memdesc:ga9bac25459c5a09d42606e7bd9320445c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the supported capabilities of the VM instance. <a href="group__EVMC.html#ga9bac25459c5a09d42606e7bd9320445c">More...</a><br /></td></tr>
<tr class="separator:ga9bac25459c5a09d42606e7bd9320445c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga06fc87d81c62e9abb8790b6e5713c55b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="group__EVMC.html#gga06fc87d81c62e9abb8790b6e5713c55ba1db9144f8af4e62865f0c003c07a02bc">EVMC_ABI_VERSION</a> = 7
}</td></tr>
<tr class="separator:ga06fc87d81c62e9abb8790b6e5713c55b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab2fa68a92a6828064a61e46060abc634"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#gab2fa68a92a6828064a61e46060abc634">evmc_call_kind</a> { <br />
&#160;&#160;<a class="el" href="group__EVMC.html#ggab2fa68a92a6828064a61e46060abc634abcf3ae29d9a88ff70b98374fc665694a">EVMC_CALL</a> = 0,
<a class="el" href="group__EVMC.html#ggab2fa68a92a6828064a61e46060abc634a6face22070bace91b429297e88d3ab1a">EVMC_DELEGATECALL</a> = 1,
<a class="el" href="group__EVMC.html#ggab2fa68a92a6828064a61e46060abc634ae9c5b431a0c823f368341c9f026642ef">EVMC_CALLCODE</a> = 2,
<a class="el" href="group__EVMC.html#ggab2fa68a92a6828064a61e46060abc634a1d15450429f540677caea05143344d33">EVMC_CREATE</a> = 3,
<br />
&#160;&#160;<a class="el" href="group__EVMC.html#ggab2fa68a92a6828064a61e46060abc634a9ec7e0da8dde8e9bc420d806c621b418">EVMC_CREATE2</a> = 4
<br />
}<tr class="memdesc:gab2fa68a92a6828064a61e46060abc634"><td class="mdescLeft">&#160;</td><td class="mdescRight">The kind of call-like instruction. <a href="group__EVMC.html#gab2fa68a92a6828064a61e46060abc634">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:gab2fa68a92a6828064a61e46060abc634"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga187a3a658849da19a0c4e8f7b51fa70d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga187a3a658849da19a0c4e8f7b51fa70d">evmc_flags</a> { <a class="el" href="group__EVMC.html#gga187a3a658849da19a0c4e8f7b51fa70da1d8bef8b2bd39a6bd1936e87b18e95bf">EVMC_STATIC</a> = 1
}<tr class="memdesc:ga187a3a658849da19a0c4e8f7b51fa70d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The flags for <a class="el" href="structevmc__message.html" title="The message describing an EVM call, including a zero-depth calls from a transaction origin...">evmc_message</a>. <a href="group__EVMC.html#ga187a3a658849da19a0c4e8f7b51fa70d">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:ga187a3a658849da19a0c4e8f7b51fa70d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4c0be97f333c050ff45321fcaa34d920"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga4c0be97f333c050ff45321fcaa34d920">evmc_status_code</a> { <br />
&#160;&#160;<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920a4bc3069fec2bab2a55355a72b7db68b7">EVMC_SUCCESS</a> = 0,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920aed5b2a4afa5a47af732569445920a4a9">EVMC_FAILURE</a> = 1,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920aed708e84d49cc1270e54ec20b0ca0a05">EVMC_REVERT</a> = 2,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920abfc47f75656c996c0b29c0553c00fc18">EVMC_OUT_OF_GAS</a> = 3,
<br />
&#160;&#160;<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920a8ea4f35a269f5fd3a722f2054c993637">EVMC_INVALID_INSTRUCTION</a> = 4,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920a443084a263a2325f1e4c629e97685367">EVMC_UNDEFINED_INSTRUCTION</a> = 5,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920ae1a613949fe1c994a36488b0bc4c86c4">EVMC_STACK_OVERFLOW</a> = 6,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920a640106fdec78d04a1098c512898d4efc">EVMC_STACK_UNDERFLOW</a> = 7,
<br />
&#160;&#160;<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920a6acf000dfa802a949063a87046f4bb26">EVMC_BAD_JUMP_DESTINATION</a> = 8,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920a2981ec30896486ac69bab7c0a1be591b">EVMC_INVALID_MEMORY_ACCESS</a> = 9,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920ac139d631ff852379d566c8a60f86ddc0">EVMC_CALL_DEPTH_EXCEEDED</a> = 10,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920a92ccaaeb3fd1ee5aa1ad022678c13bac">EVMC_STATIC_MODE_VIOLATION</a> = 11,
<br />
&#160;&#160;<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920ab960d50047f87925e540bee6230aafb7">EVMC_PRECOMPILE_FAILURE</a> = 12,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920ac0e1bf525f51da5b3d34d4f67ca549e1">EVMC_CONTRACT_VALIDATION_FAILURE</a> = 13,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920a1cc537c5875de1b42aa5d556f33223d8">EVMC_ARGUMENT_OUT_OF_RANGE</a> = 14,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920ac99fbd9645011663df070ae3c367eb4e">EVMC_WASM_UNREACHABLE_INSTRUCTION</a> = 15,
<br />
&#160;&#160;<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920aaf0c6c7a736ec498bd390884f143e57b">EVMC_WASM_TRAP</a> = 16,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920abb1dcac202eac2ed8fd3025645a2fb28">EVMC_INTERNAL_ERROR</a> = -1,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920a2f3e0d8777f8d974ead27ae2a6eb2005">EVMC_REJECTED</a> = -2,
<a class="el" href="group__EVMC.html#gga4c0be97f333c050ff45321fcaa34d920a63aa9b3ac3af61c39c20562509347b86">EVMC_OUT_OF_MEMORY</a> = -3
<br />
}<tr class="memdesc:ga4c0be97f333c050ff45321fcaa34d920"><td class="mdescLeft">&#160;</td><td class="mdescRight">The execution status code. <a href="group__EVMC.html#ga4c0be97f333c050ff45321fcaa34d920">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:ga4c0be97f333c050ff45321fcaa34d920"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae012fd6b8e5c23806b507c2d3e9fb1aa"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#gae012fd6b8e5c23806b507c2d3e9fb1aa">evmc_storage_status</a> { <br />
&#160;&#160;<a class="el" href="group__EVMC.html#ggae012fd6b8e5c23806b507c2d3e9fb1aaad6d527edcbe8a63edad5be80f252330c">EVMC_STORAGE_UNCHANGED</a> = 0,
<a class="el" href="group__EVMC.html#ggae012fd6b8e5c23806b507c2d3e9fb1aaaf102ce749767d5277923c221089da2c6">EVMC_STORAGE_MODIFIED</a> = 1,
<a class="el" href="group__EVMC.html#ggae012fd6b8e5c23806b507c2d3e9fb1aaa072394aca7925f8de8facf8f8a5e477c">EVMC_STORAGE_MODIFIED_AGAIN</a> = 2,
<a class="el" href="group__EVMC.html#ggae012fd6b8e5c23806b507c2d3e9fb1aaa8afd1741edf799d44264654d9f04a5a9">EVMC_STORAGE_ADDED</a> = 3,
<br />
&#160;&#160;<a class="el" href="group__EVMC.html#ggae012fd6b8e5c23806b507c2d3e9fb1aaae5b6ea5ec988f3b3ceb323ce3c0fa53f">EVMC_STORAGE_DELETED</a> = 4
<br />
}<tr class="memdesc:gae012fd6b8e5c23806b507c2d3e9fb1aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">The effect of an attempt to modify a contract storage item. <a href="group__EVMC.html#gae012fd6b8e5c23806b507c2d3e9fb1aa">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:gae012fd6b8e5c23806b507c2d3e9fb1aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga28d9f527bda67277bccccc100e32260a"><td class="memItemLeft" align="right" valign="top"><a id="ga28d9f527bda67277bccccc100e32260a"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga28d9f527bda67277bccccc100e32260a">evmc_set_option_result</a> { <b>EVMC_SET_OPTION_SUCCESS</b> = 0,
<b>EVMC_SET_OPTION_INVALID_NAME</b> = 1,
<b>EVMC_SET_OPTION_INVALID_VALUE</b> = 2
}<tr class="memdesc:ga28d9f527bda67277bccccc100e32260a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Possible outcomes of evmc_set_option. <br /></td></tr>
</td></tr>
<tr class="separator:ga28d9f527bda67277bccccc100e32260a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae5759b1590071966ccf6a505b52a0ef7"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#gae5759b1590071966ccf6a505b52a0ef7">evmc_revision</a> { <br />
&#160;&#160;<a class="el" href="group__EVMC.html#ggae5759b1590071966ccf6a505b52a0ef7a622480509359764aa2a258b074812a5f">EVMC_FRONTIER</a> = 0,
<a class="el" href="group__EVMC.html#ggae5759b1590071966ccf6a505b52a0ef7a04f0bf686d2b1c50612f9a96480f70a9">EVMC_HOMESTEAD</a> = 1,
<a class="el" href="group__EVMC.html#ggae5759b1590071966ccf6a505b52a0ef7a8305858ab32b80a6eced7bf177d6dee2">EVMC_TANGERINE_WHISTLE</a> = 2,
<a class="el" href="group__EVMC.html#ggae5759b1590071966ccf6a505b52a0ef7abbbcae1af73ad1efc570b40bb0363879">EVMC_SPURIOUS_DRAGON</a> = 3,
<br />
&#160;&#160;<a class="el" href="group__EVMC.html#ggae5759b1590071966ccf6a505b52a0ef7ac4b0c9cfb5d408f17255a15e26938ea6">EVMC_BYZANTIUM</a> = 4,
<a class="el" href="group__EVMC.html#ggae5759b1590071966ccf6a505b52a0ef7a7a2ed5cf3d25c8c4a68691721bb969fc">EVMC_CONSTANTINOPLE</a> = 5,
<a class="el" href="group__EVMC.html#ggae5759b1590071966ccf6a505b52a0ef7a6d913d4917e87b1fc798b450735acdeb">EVMC_PETERSBURG</a> = 6,
<a class="el" href="group__EVMC.html#ggae5759b1590071966ccf6a505b52a0ef7a5f0e287935fd0afd65afea34b51dcf8c">EVMC_ISTANBUL</a> = 7,
<br />
&#160;&#160;<a class="el" href="group__EVMC.html#ggae5759b1590071966ccf6a505b52a0ef7af53e0cb0d793d60b5fb07c6b4c3c6ab7">EVMC_BERLIN</a> = 8,
<a class="el" href="group__EVMC.html#ggae5759b1590071966ccf6a505b52a0ef7a8b67f41f15bc079b8ad40dcd7156f576">EVMC_MAX_REVISION</a> = EVMC_BERLIN
<br />
}<tr class="memdesc:gae5759b1590071966ccf6a505b52a0ef7"><td class="mdescLeft">&#160;</td><td class="mdescRight">EVM revision. <a href="group__EVMC.html#gae5759b1590071966ccf6a505b52a0ef7">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:gae5759b1590071966ccf6a505b52a0ef7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga44f9ecb88cf6422a0072936494fd6ac7"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#ga44f9ecb88cf6422a0072936494fd6ac7">evmc_capabilities</a> { <a class="el" href="group__EVMC.html#gga44f9ecb88cf6422a0072936494fd6ac7a36fd3cfe936b9525eed7f88a7b43a2a8">EVMC_CAPABILITY_EVM1</a> = (1u &lt;&lt; 0),
<a class="el" href="group__EVMC.html#gga44f9ecb88cf6422a0072936494fd6ac7af1240f950b5b9ca4369bcac424443e54">EVMC_CAPABILITY_EWASM</a> = (1u &lt;&lt; 1),
<a class="el" href="group__EVMC.html#gga44f9ecb88cf6422a0072936494fd6ac7a43ea2aa7b099a2d67bc53c118ff3683d">EVMC_CAPABILITY_PRECOMPILES</a> = (1u &lt;&lt; 2)
}<tr class="memdesc:ga44f9ecb88cf6422a0072936494fd6ac7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Possible capabilities of a VM. <a href="group__EVMC.html#ga44f9ecb88cf6422a0072936494fd6ac7">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:ga44f9ecb88cf6422a0072936494fd6ac7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gad7290bda71455f4a7175589b05945adf"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structevmc__vm.html">evmc_vm</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EVMC.html#gad7290bda71455f4a7175589b05945adf">evmc_create_example_vm</a> (void)</td></tr>
<tr class="memdesc:gad7290bda71455f4a7175589b05945adf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Example of a function creating an instance of an example EVM implementation. <a href="group__EVMC.html#gad7290bda71455f4a7175589b05945adf">More...</a><br /></td></tr>
<tr class="separator:gad7290bda71455f4a7175589b05945adf"><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>EVMC: Ethereum Client-VM Connector API. </p>
<dl class="section copyright"><dt>Copyright</dt><dd>Copyright 2016-2019 The EVMC Authors. Licensed under the Apache License, Version 2.0.</dd></dl>
<h2>Terms</h2>
<ol type="1">
<li><b>VM</b> An Ethereum Virtual Machine instance/implementation.</li>
<li><b>Host</b> An entity controlling the VM. The Host requests code execution and responses to VM queries by callback functions. This usually represents an Ethereum Client.</li>
</ol>
<h2>Responsibilities</h2>
<h3>VM</h3>
<ul>
<li>Executes the code (obviously).</li>
<li>Calculates the running gas cost and manages the gas counter except the refund counter.</li>
<li>Controls the call depth, including the exceptional termination of execution in case the maximum depth is reached.</li>
</ul>
<h3>Host</h3>
<ul>
<li>Provides access to State.</li>
<li>Creates new accounts (with code being a result of VM execution).</li>
<li>Handles refunds entirely.</li>
<li>Manages the set of precompiled contracts and handles execution of messages coming to them. </li>
</ul>
<p class="definition">Definition in file <a class="el" href="evmc_8h_source.html">evmc.h</a>.</p>
</div></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="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_5298d49f5985e350bcac49a99c9a871c.html">evmc</a></li><li class="navelem"><a class="el" href="evmc_8h.html">evmc.h</a></li>
<li class="footer">Generated on Tue Jan 7 2020 15:35:10 for EVMC by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>