Class EvmXmlRenderer
java.lang.Object
net.finmath.smartcontracts.representablestate.xml.EvmXmlRenderer
- All Implemented Interfaces:
ContractStateXmlRenderer
Reference implementation of an XML renderer for IXMLRepresentableState and IXMLRepresentableStatePart
Supported XML Schemata:
- Core scalar profile
- State-part callbacks with the renderer-provided
$partIdargument - Multi-binding attributes (evmstate:calls)
- Array binding profile for scalar and tuple arrays via evmstate:item-element + evmstate:item-field
- External template includes profile via XInclude (xi:include) with evmstate:integrity verification
- ERC-4804/6860 web3:// and w3:// XInclude resources (address-based, same-chain)
- XML-Complete state: stateXmlTemplate()
- Partial state: statePartXmlTemplate(uint256 partId)
- Author:
- Christian Fries
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classOptions controlling XInclude expansion and resource fetching. -
Constructor Summary
ConstructorsConstructorDescriptionEvmXmlRenderer(String rpcUrl) Instantiate a renderer connected to a given chain's RPC URL.EvmXmlRenderer(String rpcUrl, EvmXmlRenderer.XIncludeOptions xincludeOptions) Instantiate a renderer connected to a given chain's RPC URL, with explicit XInclude options. -
Method Summary
Modifier and TypeMethodDescriptionExtract the XML from a given contract address, executing the required calls to populate the bindings.render(String contractAddress, BigInteger blockNumber) Extract the XML from a given contract address, executing the required calls to populate the bindings.render(String contractAddress, BigInteger blockNumber, BigInteger partId) Extract the XML representing the state (either xml-complete or partial) from a given contract address at a given block, executing the required calls to populate the bindings.renderPart(String contractAddress, BigInteger partId) Extract the XML from a given contract address, executing the required calls to populate the bindings.renderTemplate(String contractAddress, boolean resolveXIncludes) Return the contract's XML template, optionally expanding all XIncludes but without evaluating anyevmstatebindings.renderTemplate(String contractAddress, BigInteger blockNumber, boolean resolveXIncludes) Return the contract's XML template at a given block, optionally expanding all XIncludes but without evaluating anyevmstatebindings.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.finmath.smartcontracts.representablestate.xml.ContractStateXmlRenderer
renderPart
-
Constructor Details
-
EvmXmlRenderer
Instantiate a renderer connected to a given chain's RPC URL. XInclude processing is enabled with default options.- Parameters:
rpcUrl- The RPC URL of the chain.
-
EvmXmlRenderer
Instantiate a renderer connected to a given chain's RPC URL, with explicit XInclude options.- Parameters:
rpcUrl- The RPC URL of the chain.xincludeOptions- Options controlling XInclude expansion and fetching. If null, defaults are used.
-
-
Method Details
-
render
Description copied from interface:ContractStateXmlRendererExtract the XML from a given contract address, executing the required calls to populate the bindings.- Specified by:
renderin interfaceContractStateXmlRenderer- Parameters:
contractAddress- A given contract address as hex 0x1234567...- Returns:
- The XML representing the current contract state.
- Throws:
Exception- An exception.
-
render
Description copied from interface:ContractStateXmlRendererExtract the XML from a given contract address, executing the required calls to populate the bindings.- Specified by:
renderin interfaceContractStateXmlRenderer- Parameters:
contractAddress- A given contract address as hex 0x1234567...blockNumber- The block number to fix for receiving the template and the state values.- Returns:
- The XML representing the current contract state.
- Throws:
Exception- An exception.
-
renderPart
Description copied from interface:ContractStateXmlRendererExtract the XML from a given contract address, executing the required calls to populate the bindings.- Specified by:
renderPartin interfaceContractStateXmlRenderer- Parameters:
contractAddress- A given contract address as hex 0x1234567...partId- State-part identifier. Must not be null; the on-chain type is uint256.- Returns:
- The XML representing the current contract state.
- Throws:
Exception- An exception.
-
renderTemplate
Return the contract's XML template, optionally expanding all XIncludes but without evaluating anyevmstatebindings.- Parameters:
contractAddress- The contract address.resolveXIncludes- Whether XIncludes should be expanded recursively.- Returns:
- The XML template.
- Throws:
Exception- Any exception that occurs while loading or expanding the template.
-
renderTemplate
public String renderTemplate(String contractAddress, BigInteger blockNumber, boolean resolveXIncludes) throws Exception Return the contract's XML template at a given block, optionally expanding all XIncludes but without evaluating anyevmstatebindings.- Parameters:
contractAddress- The contract address.blockNumber- The block number to fix for loading the template and its includes.resolveXIncludes- Whether XIncludes should be expanded recursively.- Returns:
- The XML template.
- Throws:
Exception- Any exception that occurs while loading or expanding the template.
-
render
public String render(String contractAddress, BigInteger blockNumber, BigInteger partId) throws Exception Description copied from interface:ContractStateXmlRendererExtract the XML representing the state (either xml-complete or partial) from a given contract address at a given block, executing the required calls to populate the bindings.- Specified by:
renderin interfaceContractStateXmlRenderer- Parameters:
contractAddress- A given contract address as hex 0x1234567...blockNumber- The block number to fix for receiving the template and the state values.partId- If null, use the complete-state template; otherwise use the state-part template. The on-chain type is uint256.- Returns:
- The XML representing the current contract state.
- Throws:
Exception- An exception.
-