{"id":34079802,"url":"https://github.com/elyselam/etherscan-ml","last_synced_at":"2025-12-14T11:02:24.149Z","repository":{"id":47875616,"uuid":"128369334","full_name":"elyselam/Etherscan-ML","owner":"elyselam","description":"Python Data Science and Machine Learning Library for the Ethereum and ERC-20 Blockchain ","archived":false,"fork":false,"pushed_at":"2022-02-16T13:23:02.000Z","size":4838,"stargazers_count":140,"open_issues_count":1,"forks_count":34,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-09-22T14:44:54.255Z","etag":null,"topics":["blockchain","blockchain-explorer","cryptocurrency","data-mining","data-science","erc20","ethereum","ethereum-address","ethereum-blockchain","etherscan-api","initial-coin-offering","machine-learning","tokensale"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elyselam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-06T08:28:31.000Z","updated_at":"2025-05-23T16:14:34.000Z","dependencies_parsed_at":"2022-09-04T23:20:14.393Z","dependency_job_id":null,"html_url":"https://github.com/elyselam/Etherscan-ML","commit_stats":null,"previous_names":["elyselam/machine_learning_etherscan"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/elyselam/Etherscan-ML","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elyselam%2FEtherscan-ML","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elyselam%2FEtherscan-ML/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elyselam%2FEtherscan-ML/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elyselam%2FEtherscan-ML/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elyselam","download_url":"https://codeload.github.com/elyselam/Etherscan-ML/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elyselam%2FEtherscan-ML/sbom","scorecard":{"id":374272,"data":{"date":"2025-08-11","repo":{"name":"github.com/elyselam/Etherscan-ML","commit":"95dbf46818bc52688d75ca6486f7e388d0bc77c9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/20 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-18T13:50:50.799Z","repository_id":47875616,"created_at":"2025-08-18T13:50:50.800Z","updated_at":"2025-08-18T13:50:50.800Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27726942,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-14T02:00:11.348Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","blockchain-explorer","cryptocurrency","data-mining","data-science","erc20","ethereum","ethereum-address","ethereum-blockchain","etherscan-api","initial-coin-offering","machine-learning","tokensale"],"created_at":"2025-12-14T11:02:23.023Z","updated_at":"2025-12-14T11:02:24.141Z","avatar_url":"https://github.com/elyselam.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Etherscan ML Machine Learning, Data Processing and Bash module \nThis is an ongoing project.\nMade by Elyse Lam for the USC Viterbi Data Science Bootcamp\n\nAdapted from py-etherscan-api module by https://github.com/corpetty/\n\npip install etherscan-ml \u003cbr /\u003e\nwget https://tinyurl.com/etherscan-ml \u003cbr /\u003e\nMACOSX:  brew install gnu-sed \u003cbr /\u003e\n\u003cbr /\u003e\n# Scrape Etherscan then use Gephi to visualize network of transactions\n\n\u003cimg src=\"/Network Analysis/EOS_network.png\"\n     alt=\"Markdown Monster icon\"\n     style=\"float: left; margin-right: 10px;\" /\u003e\n\n\n\u003cbr /\u003e\n## wallet-tools\n\u003cbr /\u003e\u003cbr /\u003e\n\u003cb\u003eether_balance.py\u003c/b\u003e - Ether balance of a wallet.\n\u003cbr /\u003e\u003cbr /\u003e\n\u003cb\u003ewallet_inspector.py\u003c/b\u003e - Experimental..discovered an undocumented API gets all transactions without paging issue get_all_transactions had. Requires additional formatting.\ntransaction_batch.py - Gets all of the 1st page transactions for a wallet. \n\u003cbr /\u003e\u003cbr /\u003e\n## erc20-tools\n\u003cbr /\u003e\u003cbr /\u003e\n\u003cb\u003eget_abi.py\u003c/b\u003e - Gets the abi of a smart contract. Fails for non-smart contracts. TODO: integrate with token test automation libraries\n\u003cbr /\u003e\u003cbr /\u003e\n\u003cb\u003eget_token_balance.py\u003c/b\u003e - Gets the token balance of a wallet address. Useful to connect with data pulled from all_transactions.py\n\u003cbr /\u003e\u003cbr /\u003e\n\u003cb\u003eall_transactions.py\u003c/b\u003e- Used to get all transactions for a Token. Must install gnu-sed (brew install gnu-sed) on Mac. Linux change gsed in fix_batch.sh to sed Python 3 only. Takes at least 20 mins to pull every transaction a token has ever had.\n\u003cbr /\u003e\t\t\t\u003cb\u003eUsage:\u003c/b\u003e python3.6 all_transactions.py \u003ctoken address\u003e \u003e tokenname.preprocessed\n\u003cbr /\u003e\t\t\t\u003cb\u003e(after completion):\u003c/b\u003e ./fix_batch.sh tokenname.preprocessed\n\u003cbr /\u003e\t\t\t\u003cb\u003e(if you need a csv):\u003c/b\u003e python3.6 convert-wallet.py \u003ctokenname.json\u003e\n\u003cbr /\u003e\t\t\t\u003cb\u003eTesting:\u003c/b\u003e run ./fix_batch.sh medtoken.preprocessed for test data\n\u003cbr /\u003e\t\t\t\u003cb\u003eNotes:\u003c/b\u003e ERC20 Transfers are buried inside of the data in the input field. \n\u003cbr /\u003e\t\t\tThis line works for a google sheets import of the CSV but I am working on a better tool. \n\u003cbr /\u003e\t\t\t=\"0x\"\u0026LEFT(RIGHT($M4, 104), 40)   M is the location of input, and 4 is the row. The rest is charcount stripping.\n\u003cbr /\u003e\n\n## ether-tools\n\u003cbr /\u003e\n\u003cb\u003eget_ether_last_price.py\u003c/b\u003e - Gets latest price.\n\u003cbr /\u003e\u003cbr /\u003e\n\u003cb\u003eget_total_ether_supply.py\u003c/b\u003e - Gets total available ether in Ethereum Network.\n\u003cbr /\u003e\n\nOriginal py-etherscan-api was a well built scaffolding for python\nscripts using the Etherscan API. The examples were so easy to work with\nI created a very basic command line interface and a couple new tools and\ndecided to package them so you can integrate etherscan into your bash or\npython scripts as an input or output.\n\nDirectories have been restructured to fit the tools better. I pipe\ndifferent wallet-tools into csvs for training or call them based on\ntriggers from bash scripts. Suggestions and requests welcome.\n\n# Original Documentation Below:\n\n\n\nEtherScan.io API python bindings\n\n## Description\nThis module is written as an effort to provide python bindings to the EtherScan.io API, which can be found at: \nhttps://etherscan.io/apis\nIn order to use this, you must attain an Etherscan user account, and generate an API key.\n\nIn order to use the API, you must provide an API key at runtime, which can be found at the Etherscan.io API website.\nIf you'd like to use the provided examples without altering them, then the JSON file `api_key.json` must be stored in\nthe base directory.  Its format is as follows:\n\n    { \"key\" : \"YourApiKeyToken\" }\n    \nwith `YourApiKeyToken` is your provided API key token from EtherScan.io\n\n## Installation\nTo install the package to your computer, simply run the following command in the base directory:\n\n    python setup.py install\n\n## Available bindings\nCurrently, only the following Etherscan.io API modules are available:\n\n- accounts\n- stats\n- tokens\n\nThe remaining available modules provided by Etherscan.io will be added shortly\n\n## Examples\nAll possible calls have an associated example file in the examples folder to show how to call the binding\n\nThese of course will be fleshed out with more details and explanation in time\n\nJupyter notebooks area also included in each directory to show all examples\n\n## TODO:\n\n- Package and submit to PyPI\n- Add the following modules:\n    - event logs\n    - geth proxy\n    - websockets\n- Add robust documentation\n- Add unit test suite\n- Add request throttling based on Etherscan's suggestions\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felyselam%2Fetherscan-ml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felyselam%2Fetherscan-ml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felyselam%2Fetherscan-ml/lists"}