java.lang.Object
net.finmath.smartcontracts.representablestate.xml.EvmXmlRenderer
All Implemented Interfaces:
ContractStateXmlRenderer

public class EvmXmlRenderer extends Object implements ContractStateXmlRenderer
Reference implementation of an XML renderer for IXMLRepresentableState and IXMLRepresentableStatePart Supported XML Schemata:
  • Core scalar profile
  • State-part callbacks with the renderer-provided $partId argument
  • 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)
Supported Contract Templates
  • XML-Complete state: stateXmlTemplate()
  • Partial state: statePartXmlTemplate(uint256 partId)
Author:
Christian Fries
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final class 
    Options controlling XInclude expansion and resource fetching.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Instantiate a renderer connected to a given chain's RPC URL.
    Instantiate a renderer connected to a given chain's RPC URL, with explicit XInclude options.
  • Method Summary

    Modifier and Type
    Method
    Description
    render(String contractAddress)
    Extract 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 any evmstate bindings.
    renderTemplate(String contractAddress, BigInteger blockNumber, boolean resolveXIncludes)
    Return the contract's XML template at a given block, optionally expanding all XIncludes but without evaluating any evmstate bindings.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface net.finmath.smartcontracts.representablestate.xml.ContractStateXmlRenderer

    renderPart
  • Constructor Details

    • EvmXmlRenderer

      public EvmXmlRenderer(String rpcUrl)
      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

      public EvmXmlRenderer(String rpcUrl, EvmXmlRenderer.XIncludeOptions xincludeOptions)
      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

      public String render(String contractAddress) throws Exception
      Description copied from interface: ContractStateXmlRenderer
      Extract the XML from a given contract address, executing the required calls to populate the bindings.
      Specified by:
      render in interface ContractStateXmlRenderer
      Parameters:
      contractAddress - A given contract address as hex 0x1234567...
      Returns:
      The XML representing the current contract state.
      Throws:
      Exception - An exception.
    • render

      public String render(String contractAddress, BigInteger blockNumber) throws Exception
      Description copied from interface: ContractStateXmlRenderer
      Extract the XML from a given contract address, executing the required calls to populate the bindings.
      Specified by:
      render in interface ContractStateXmlRenderer
      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

      public String renderPart(String contractAddress, BigInteger partId) throws Exception
      Description copied from interface: ContractStateXmlRenderer
      Extract the XML from a given contract address, executing the required calls to populate the bindings.
      Specified by:
      renderPart in interface ContractStateXmlRenderer
      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

      public String renderTemplate(String contractAddress, boolean resolveXIncludes) throws Exception
      Return the contract's XML template, optionally expanding all XIncludes but without evaluating any evmstate bindings.
      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 any evmstate bindings.
      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: ContractStateXmlRenderer
      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.
      Specified by:
      render in interface ContractStateXmlRenderer
      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.