moody.m.verify.verify API documentation

# Module `moody.m.verify.verify`

Expand source code

    import os
    from subprocess import CalledProcessError

    from moody.libeb import MiliDoS, SolWeb3Tool
    from moody import Config
    from .solfla import SolflatlinerWrapper
    from ..verify.http import HttpProvider

    def verifyInternalSource(
            network: Config,
            rootpath: str,
            sourceClassName: str,
            original_source_file_entry: str,
    ):
        """
        we will enable this by the network
        :param network:
        :param rootpath:
        :param sourceClassName:
        :param original_source_file_entry:
        :return:
        """
        maker = SolflatlinerWrapper(rootpath)

        meta = MiliDoS(network).withPOA()
        meta.setWorkspace(rootpath).Auth()

        if meta.hasContractName(sourceClassName) is False:
            print(f"There is no contract for {sourceClassName} found.")
            exit(2)

        solcf = SolWeb3Tool()
        solcf.setBasePath(rootpath)
        solcf.setBuildNameSpace("artifacts")
        solcf.LoadInternalMeta(sourceClassName)
        print(f"open root path is {rootpath}")
        input_source = os.path.join(rootpath, original_source_file_entry)
        try:
            maker.make_flaten_tmp_file(input_source, solcf.GetMetaCompilerVer(False))
        except CalledProcessError:
            print("Error from calling the verification from merging source file")

        if maker.proccess_result is False:
            print(f"Failed to make the merge source file from {input_source}")
            exit(44)

        _sendVerifyRequest(
            explorer_base_uri=network.block_explorer,
            contractAddress=meta.getAddr(sourceClassName),
            solidity_ver=solcf.GetMetaSettings().solidity_ver,
            mergedSource=solcf.ReadAsStrAndEscape(maker.output_file),
            optimizationUsed=solcf.GetMetaSettings().optimization_enabled,
            optimzationRuns=solcf.GetMetaSettings().optimization_runs,
            encodedConstructorArgs=[],
            contractName=sourceClassName
        )

    # source code pasting not sure how to do it
    # https://github.com/eth-brownie/brownie/blob/ce603c59b5e4cd46de0782e969214af3e796a7d7/brownie/project/ethpm.py#L92

    def verifyBySource(
            network: Config,
            rootpath: str,
            sourceClassName: str,
            original_source_file_entry: str
    ):
        """
        sol flatliner wrapper
        :param network:
        :param rootpath:
        :param sourceClassName:
        :param original_source_file_entry:
        :return:
        """
        maker = SolflatlinerWrapper(rootpath)
        meta = MiliDoS(network).withPOA()
        meta.setWorkspace(rootpath).Auth()
        if meta.hasContractName(sourceClassName) is False:
            print(f"There is no contract for {sourceClassName} found.")
            exit(2)

        solcf = SolWeb3Tool()
        solcf.setBasePath(rootpath)
        solcf.GetCodeClassFromBuild(sourceClassName)
        input_source = os.path.join(rootpath, original_source_file_entry)
        try:
            maker.make_flaten_tmp_file(input_source, solcf.GetMetaCompilerVer(False))
        except CalledProcessError:
            print("Error from calling the verification from merging source file")

        if maker.proccess_result is False:
            print(f"Failed to make the merge source file from {input_source}")
            exit(44)

        _sendVerifyRequest(
            explorer_base_uri=network.block_explorer,
            contractAddress=meta.getAddr(sourceClassName),
            solidity_ver=solcf.GetMetaSettings().solidity_ver_full,
            mergedSource=solcf.ReadAsStrAndEscape(maker.output_file),
            optimizationUsed=solcf.GetMetaSettings().optimization_enabled,
            optimzationRuns=solcf.GetMetaSettings().optimization_runs,
            encodedConstructorArgs=[],
            contractName=sourceClassName
        )

    def _sendVerifyRequest(explorer_base_uri: str,
                           contractAddress: str,
                           mergedSource: str,
                           contractName: str,
                           optimizationUsed: bool,
                           optimzationRuns: int,
                           solidity_ver: str,
                           encodedConstructorArgs: list,
                           ):
        apiuri = f"{explorer_base_uri}/api"
        verifyapi = f"{apiuri}?module=contract&action=verify"

        # todo: maybe there are links for the lib

        o = HttpProvider()
        pre = dict(
            addressHash=contractAddress,
            contractSourceCode=mergedSource,
            name=contractName,
            compilerVersion=f"v{solidity_ver}",
            optimization=optimizationUsed,
            optimizationRuns=optimzationRuns,
            constructorArguments=encodedConstructorArgs
        )
        print(pre)
        result = o.request(verifyapi, json=pre, method="POST")
        print(result)

## Functions

`def verifyBySource(network: Config, rootpath: str, sourceClassName: str, original_source_file_entry: str)`

  sol flatliner wrapper :param network: :param rootpath: :param sourceClassName: :param original_source_file_entry: :return:

  Expand source code

      def verifyBySource(
              network: Config,
              rootpath: str,
              sourceClassName: str,
              original_source_file_entry: str
      ):
          """
          sol flatliner wrapper
          :param network:
          :param rootpath:
          :param sourceClassName:
          :param original_source_file_entry:
          :return:
          """
          maker = SolflatlinerWrapper(rootpath)
          meta = MiliDoS(network).withPOA()
          meta.setWorkspace(rootpath).Auth()
          if meta.hasContractName(sourceClassName) is False:
              print(f"There is no contract for {sourceClassName} found.")
              exit(2)

          solcf = SolWeb3Tool()
          solcf.setBasePath(rootpath)
          solcf.GetCodeClassFromBuild(sourceClassName)
          input_source = os.path.join(rootpath, original_source_file_entry)
          try:
              maker.make_flaten_tmp_file(input_source, solcf.GetMetaCompilerVer(False))
          except CalledProcessError:
              print("Error from calling the verification from merging source file")

          if maker.proccess_result is False:
              print(f"Failed to make the merge source file from {input_source}")
              exit(44)

          _sendVerifyRequest(
              explorer_base_uri=network.block_explorer,
              contractAddress=meta.getAddr(sourceClassName),
              solidity_ver=solcf.GetMetaSettings().solidity_ver_full,
              mergedSource=solcf.ReadAsStrAndEscape(maker.output_file),
              optimizationUsed=solcf.GetMetaSettings().optimization_enabled,
              optimzationRuns=solcf.GetMetaSettings().optimization_runs,
              encodedConstructorArgs=[],
              contractName=sourceClassName
          )

`def verifyInternalSource(network: Config, rootpath: str, sourceClassName: str, original_source_file_entry: str)`

  we will enable this by the network :param network: :param rootpath: :param sourceClassName: :param original_source_file_entry: :return:

  Expand source code

      def verifyInternalSource(
              network: Config,
              rootpath: str,
              sourceClassName: str,
              original_source_file_entry: str,
      ):
          """
          we will enable this by the network
          :param network:
          :param rootpath:
          :param sourceClassName:
          :param original_source_file_entry:
          :return:
          """
          maker = SolflatlinerWrapper(rootpath)

          meta = MiliDoS(network).withPOA()
          meta.setWorkspace(rootpath).Auth()

          if meta.hasContractName(sourceClassName) is False:
              print(f"There is no contract for {sourceClassName} found.")
              exit(2)

          solcf = SolWeb3Tool()
          solcf.setBasePath(rootpath)
          solcf.setBuildNameSpace("artifacts")
          solcf.LoadInternalMeta(sourceClassName)
          print(f"open root path is {rootpath}")
          input_source = os.path.join(rootpath, original_source_file_entry)
          try:
              maker.make_flaten_tmp_file(input_source, solcf.GetMetaCompilerVer(False))
          except CalledProcessError:
              print("Error from calling the verification from merging source file")

          if maker.proccess_result is False:
              print(f"Failed to make the merge source file from {input_source}")
              exit(44)

          _sendVerifyRequest(
              explorer_base_uri=network.block_explorer,
              contractAddress=meta.getAddr(sourceClassName),
              solidity_ver=solcf.GetMetaSettings().solidity_ver,
              mergedSource=solcf.ReadAsStrAndEscape(maker.output_file),
              optimizationUsed=solcf.GetMetaSettings().optimization_enabled,
              optimzationRuns=solcf.GetMetaSettings().optimization_runs,
              encodedConstructorArgs=[],
              contractName=sourceClassName
          )