SDK EBTC Documentation v0.10.
  • Welcome
  • Getting Started
    • Quickstart
    • Overview of Dapps
  • Basics
    • Terminology
    • Contract function
    • Affiliate
    • Blockchain Data Structure
    • Block Reward Update
    • Random Block Rewards
      • The first random block reward of EBTC has been mined! 🎉
    • Hash Algorithm Design of Blockchain
    • System Security Design and Implementation
    • Activate "Anti-Whale"
    • EBTC Beta 01 Airdrop Program
  • Road Map
    • The Future of EBTC
    • Outstanding Features of EBTC
    • Benefits of Holding EBTC
    • EBTC Decentralized Finance
    • EBTC Meme Sniper Tool
    • COMMUNITY
  • Version 2 - WeBTC
    • Wrapped eBTC ( WeBTC )
    • Convert from EBTC to WeBTC
    • BNB & EBTC Staking Mechanism
    • Technology and Infrastructure
    • Vision and Mission
    • Development Roadmap
    • Update soon
Powered by GitBook
On this page
  1. Basics

Terminology

PreviousOverview of DappsNextContract function

Last updated 9 months ago

Machine learning languages ​​and consensus algorithms serve as on-chain operating mechanisms. Public on-chain proof and verifiable on the BSC blockchain.

Smart contract map

Contract Source Code Verified (Exact Match)

  • Contract Name: Token ExtremeBTC (EBTC).

  • Compiler VersioVersion: V 0.5.10+commit.5a6ea5b5a6ea5b1.

  • Optimization Enabled: No with 200 runruns.

Mapping and storage

Usage: sol2uml [command] <options>

Generate UML class or storage diagrams from local Solidity code or verified Solidity code on Etherscan-like explorers.
Can also flatten or compare verified source files on Etherscan-like explorers.

Options:
  -sf, --subfolders <value>                       number of subfolders that will be recursively searched for Solidity files. (default: all)
  -f, --outputFormat <value>                      output file format. (choices: "svg", "png", "dot", "all", default: "svg")
  -o, --outputFileName <value>                    output file name
  -i, --ignoreFilesOrFolders <names>              comma-separated list of files or folders to ignore
  -n, --network <network>                         Ethereum network which maps to a blockchain explorer (choices: "mainnet", "holesky", "sepolia", "polygon", "arbitrum", "avalanche", "bsc", "crono", "fantom", "moonbeam", "optimism", "gnosis", "celo", "scroll", "base", default: "mainnet", env: ETH_NETWORK)
  -e, --explorerUrl <url>                         Override the `network` option with a custom blockchain explorer API URL. eg Polygon Mumbai testnet https://api-testnet.polygonscan.com/api (env: EXPLORER_URL)
  -k, --apiKey <key>                              Blockchain explorer API key. eg Etherscan, Arbiscan, Optimism, BscScan, CronoScan, FTMScan, PolygonScan or SnowTrace API key (env: SCAN_API_KEY)
  -bc, --backColor <color>                        Canvas background color. "none" will use a transparent canvas. (default: "white")
  -sc, --shapeColor <color>                       Basic drawing color for graphics, not text (default: "black")
  -fc, --fillColor <color>                        Color used to fill the background of a node (default: "gray95")
  -tc, --textColor <color>                        Color used for text (default: "black")
  -v, --verbose                                   run with debugging statements (default: false)
  -V, --version                                   output the version number
  -h, --help                                      display help for command

Commands:
  class [options] <fileFolderAddress>             Generates a UML class diagram from Solidity source code.
  storage [options] <fileFolderAddress>           Visually display a contract's storage slots.
  
                                                  WARNING: sol2uml does not use the Solidity compiler so may differ with solc. A known example is fixed-sized arrays declared with an expression will fail to be sized.
  flatten <contractAddress>                       Merges verified source files for a contract from a Blockchain explorer into one local Solidity file.
  
                                                  In order for the merged code to compile, the following is done:
                                                  1. pragma solidity is set using the compiler of the verified contract.
                                                  2. All pragma solidity lines in the source files are commented out.
                                                  3. File imports are commented out.
                                                  4. "SPDX-License-Identifier" is renamed to "SPDX--License-Identifier".
                                                  5. Contract dependencies are analysed so the files are merged in an order that will compile.
  diff [options] <addressA> <fileFoldersAddress>  Compare verified Solidity code to another verified contract, a local file or local source files.
  
                                                  The results show the comparison of contract A to B.
                                                  The green sections are additions to contract B that are not in contract A.
                                                  The red sections are removals from contract A that are not in contract B.
                                                  The line numbers are from contract B. There are no line numbers for the red sections as they are not in contract B.
  help [command]                                  display help for command

Class usage

Usage: sol2uml class [options] <fileFolderAddress>

Generates a UML class diagram from Solidity source code.

Arguments:
  fileFolderAddress                file name, folder(s) or contract address.
                                  When a folder is used, all *.sol files in that folder and all sub folders are used.
                                  A comma-separated list of files and folders can also be used. For example,
                                        sol2uml contracts,node_modules/@openzeppelin
                                  If an Ethereum address with a 0x prefix is passed, the verified source code from Etherscan will be used. For example
                                        sol2uml 0x79fEbF6B9F76853EDBcBc913e6aAE8232cFB9De9

Options:
  -b, --baseContractNames <names>  only output contracts connected to these comma separated base contract names
  -d, --depth <value>              depth of connected classes to the base contracts. 1 will only show directly connected contracts, interfaces, libraries, structs and enums. (default: all)
  -c, --clusterFolders             cluster contracts into source folders (default: false)
  -hv, --hideVariables             hide variables from contracts, interfaces, structs and enums (default: false)
  -hf, --hideFunctions             hide functions from contracts, interfaces and libraries (default: false)
  -hp, --hidePrivates              hide private and internal attributes and operators (default: false)
  -hm, --hideModifiers             hide modifier functions from contracts (default: false)
  -ht, --hideEvents                hide events from contracts, interfaces and libraries (default: false)
  -hc, --hideConstants             hide file level constants (default: false)
  -hx, --hideContracts             hide contracts (default: false)
  -he, --hideEnums                 hide enum types (default: false)
  -hs, --hideStructs               hide data structures (default: false)
  -hl, --hideLibraries             hide libraries (default: false)
  -hi, --hideInterfaces            hide interfaces (default: false)
  -ha, --hideAbstracts             hide abstract contracts (default: false)
  -hn, --hideFilename              hide relative path and file name (default: false)
  -s, --squash                     squash inherited contracts to the base contract(s) (default: false)
  -hsc, --hideSourceContract       hide the source contract when using squash (default: false)
  -h, --help                       display help for command

Flatten usage

Usage: sol2uml flatten <contractAddress>

Merges verified source files for a contract from a Blockchain explorer into one local Solidity file.

In order for the merged code to compile, the following is done:
1. pragma solidity is set using the compiler of the verified contract.
2. All pragma solidity lines in the source files are commented out.
3. File imports are commented out.
4. "SPDX-License-Identifier" is renamed to "SPDX--License-Identifier".
5. Contract dependencies are analysed so the files are merged in an order that will compile.

Arguments:
  contractAddress  Contract address in hexadecimal format with a 0x prefix.

Options:
  -h, --help       display help for command

Diff usage

//Usage: sol2uml diff [options] <addressA> <addressB or comma-separated folders>

Compare verified contract code on Etherscan-like explorers to another verified contract, a local file or multiple local files.

The results show the comparison of contract A to B.
The green sections are additions to contract B that are not in contract A.
The red sections are removals from contract A that are not in contract B.
The line numbers are from contract B. There are no line numbers for the red sections as they are not in contract B.

Arguments:
  addressA                   Contract address in hexadecimal format with a 0x prefix of the first contract
  fileFoldersAddress         Location of the contract source code to compare against. Can be a filename, comma-separated list of local folders or a contract address. Examples:
    "flat.sol" will compare against a local file called "flat.sol". This must be used when address A's verified source code is a single, flat file.
    ".,node_modules" will compare against local files under the current working folder and the node_modules folder. This is used when address A's verified source code is multiple files.
    0x1091588Cc431275F99DC5Df311fd8E1Ab81c89F3 will compare against the verified source code from Etherscan.

Options:
  -s, --summary              Only show a summary of the file differences (default: false)
  -af --aFile <value>        Limit code compare to contract A source file with the full path and extension as displayed in the file summary (default: compares all source files)
  -bf --bFile <value>        Contract B source file with the full path and extension as displayed in the file summary. Used if aFile is specified and the source file has been renamed (default: aFile if specified)
  -bn, --bNetwork <network>  Ethereum network which maps to a blockchain explorer for contract B if on a different blockchain to contract A. Contract A uses the `network` option (default: value of `network` option) (choices: "mainnet", "holesky", "sepolia", "polygon", "arbitrum", "avalanche", "bsc", "crono", "fantom", "moonbeam", "optimism", "gnosis", "celo", "base")
  -be, --bExplorerUrl <url>  Override the `bNetwork` option with custom blockchain explorer API URL for contract B if on a different blockchain to contract A. Contract A uses the `explorerUrl` (default: value of `explorerUrl` option)
  -bk, --bApiKey <key>       Blockchain explorer API key for contract B if on a different blockchain to contract A. Contract A uses the `apiKey` option (default: value of `apiKey` option)
  --flatten                  Flatten into a single file before comparing. Only works when comparing two verified contracts, not to local files (default: false)
  --saveFiles                Save the flattened contract code to the filesystem when using the `flatten` option. The file names will be the contract address with a .sol extension (default: false)
  -l, --lineBuffer <value>   Minimum number of lines before and after changes (default: 4)
  -h, --help                 display help for command

About

EVMVersion: MIT

This is a rewrite of the Richard Ramos's tool which no longer works as it uses which cannot handle newer Solidity syntax like constructor.

sol2uml uses which is maintained by the Solidity tool community lead by Franco Victorio (@fvictorio). This is a fork of Federico Bond's (GitHub @federicobond) . The logic to generate the dot syntax has been rewritten and different UML syntax is now used to Richard Ramos's original implementation.

The is published with each major release.

The diagrams are generated using which uses to render a file. allows dot files to be edited and rendered into a SVG dynamically.

The diff command use's Google's .

license
solidity-diagram-gen
solidity-parser
@solidity-parser/parser
solidity-parser-antlr
Solidity language grammar
viz.js
Graphviz
Scalable Vector Graphics (SVG)
Graphviz Online
Diff Match and Patch library