{"id":22344391,"url":"https://github.com/symbol/miscellaneous","last_synced_at":"2025-08-06T10:16:08.851Z","repository":{"id":40418136,"uuid":"388227662","full_name":"symbol/miscellaneous","owner":"symbol","description":"miscellaneous but useful symbol scripts","archived":false,"fork":false,"pushed_at":"2025-04-30T23:48:11.000Z","size":3774,"stargazers_count":7,"open_issues_count":10,"forks_count":3,"subscribers_count":7,"default_branch":"dev","last_synced_at":"2025-05-01T00:35:29.756Z","etag":null,"topics":["python-script"],"latest_commit_sha":null,"homepage":null,"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/symbol.png","metadata":{"files":{"readme":"README.md","changelog":"history/__init__.py","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-07-21T19:41:25.000Z","updated_at":"2025-03-28T13:25:06.000Z","dependencies_parsed_at":"2024-06-03T04:10:20.343Z","dependency_job_id":"533e706e-9b40-43be-aaed-cd5f70d32612","html_url":"https://github.com/symbol/miscellaneous","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/symbol/miscellaneous","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/symbol%2Fmiscellaneous","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/symbol%2Fmiscellaneous/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/symbol%2Fmiscellaneous/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/symbol%2Fmiscellaneous/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/symbol","download_url":"https://codeload.github.com/symbol/miscellaneous/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/symbol%2Fmiscellaneous/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267803963,"owners_count":24146527,"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-07-30T02:00:09.044Z","response_time":70,"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":["python-script"],"created_at":"2024-12-04T09:10:18.264Z","updated_at":"2025-07-30T03:30:55.132Z","avatar_url":"https://github.com/symbol.png","language":"Python","readme":"# Miscellany\n\n## account\n\n### symbol_multisig_create\n\n_prepares transactions for creating symbol multisig accounts_\n\nCreates an aggregate transaction containing an embedded multisig account modification transaction signed by all cosigners.\n\nExample: prepare transactions as described in `account/samples/symbol_multisig_create.yaml`.\n\n```sh\npython3 -m account.symbol_multisig_create --input account/samples/symbol_multisig_create.yaml\n```\n\n### symbol_multisig_relink\n\n_prepares transactions for relinking Symbol voting public keys_\n\nCreates an aggregate transaction containing embedded voting key link and/or voting key unlink transactions signed by specified cosigners.\n\nExample: prepare transactions as described in `account/samples/symbol_multisig_relink.yaml`.\n\n```sh\npython3 -m account.symbol_multisig_relink --input account/samples/symbol_multisig_relink.yaml\n```\n\n### two_part_send\n\n_prepares transactions for sending tokens from one account to another in two phases_\n\nPhase One can be used to send a small amount to the destination account to be used as a correctness check.\nPhase Two can be used to send the remainder after Phase One succeeds.\n\nExample: prepare transactions as described in `account/samples/two_part_send.yaml`.\n\n```sh\npython3 -m account.two_part_send --input account/samples/two_part_send.yaml\n```\n\n### verify_ownership\n\n_verifies account derivations from a BIP32 seed and passphrase_\n\nCompares BIP32 derivation paths to expected accounts.\n\nExample: check accounts in `account/samples/verify_ownership.yaml`.\n\n```sh\npython3 -m account.verify_ownership --input account/samples/verify_ownership.yaml\n```\n\n## health\n\n### check_nem_balances\n\n_check balances of multiple accounts in a network_\n\nPrints balance and last harvest information for a set of NEM and/or Symbol accounts.\n\nExample: load accounts and nodes from `templates/symbol.mainnet.yaml` and print all accounts with role `core`.\n\n```sh\npython3 -m health.check_nem_balances --resources templates/symbol.mainnet.yaml --groups core\n```\n\n```sh\n UTC Time: 2021-07-30 18:15:59.437878\nXYM Price: 0.115421\n\n| [SYMBOL @ 390742] CORE ACCOUNTS          | PK  | TYPE | IMPORTA |  HARVEST HEIGHT  | Balance              | V % |\n-------------------------------------------------------------------------------------------------------------------\n| NBMDALVKGYK562LXSESZT6FFNI65FDXFY5VOXSQ  |  X  | UNLI | 0.00033 |       0    NEVER |     3,125,000.000003 | N/A |\n| NABH3A5VDLYAVA73OV246JTVMAIPD2WEMAQL27I  |  X  | MAIN | 0.00033 |  390561 ~ 90.50M |     3,101,302.375428 | N/A |\n| NAL4XHZU6MANNNFQI4Z2WNMU3KRI2YW2MRRMHLI  |  X  | MAIN | 0.00033 |  388170 ~ 21.43H |     3,106,297.223537 | N/A |\n-------------------------------------------------------------------------------------------------------------------\n9,332,599.598968 (~$1,077,177.91 USD)\n-------------------------------------------------------------------------------------------------------------------\n```\n\n## history\n\n### downloader\n\n_download transactions from nem or symbol networks_\n\nRetrieves balance change events for a set of accounts over a specified date range.\n\nExample: download all June 2021 balance change events for the accounts in `templates/symbol.mainnet.yaml` and save the data in `_histout/raw`.\n\n```sh\npython3 -m history.downloader --input templates/symbol.mainnet.yaml --start-date 2021-06-01 --end-date 2021-06-30 --output _histout/raw\n```\n\n### merger\n\n_generates a merged pricing and account report_\n\nMerges all the of the raw downloaded data into a single unified report file.\n\nExample: merge the downloaded data in `_histout/raw` into `_histout/all/full.csv` using prices for `symbol`.\n\n```sh\nmkdir -p _histout/all\npython3 -m history.merger --input _histout/raw --output _histout/all/full.csv --ticker symbol\n```\n\n### grouper\n\n_produces grouped report by aggregating input data based on mode_\n\nGroups the data in a unified report file by one of the following `mode`s:\n\n| report name | grouping key |\n| :-- | :-- |\n| account | account |\n| account_tag | (account, tag) |\n| daily | (day, tag) |\n| tag | tag |\n\nExample: Group data in ` _histout/all/full.csv` by `account` and produce a new `_histout/account/grouped.csv` report.\n\n```sh\nmkdir -p _histout/account\npython3 -m history.grouper --input _histout/all/full.csv --output _histout/account/grouped.csv --mode account\n```\n\n### summarizer\n\n_generates a balance table based on options_\n\nProduces a balance table from multiple grouped reports denominated in either tokens or fiat. Only `account` and `tag` modes are supported.\n\nExample: Read `account` grouped reports from ` _histout/account` and produce a new `_histout/balances.csv` report.\n\n```sh\npython3 -m history.summarizer --input _histout/account --output _histout/balances.csv --mode account\n```\n\n### reconciler\n\n_reconciles an account balance table with a network_\n\nCompares the account balances in an account balance table with live network balances.\n\nExample: Compare the balances in `_histout/balances.csv` with the `spot` network balances reported by the network described in `templates/symbol.mainnet.yaml`.\n\n```sh\npython3 -m history.reconciler --input _histout/balances.csv --resources templates/symbol.mainnet.yaml --mode spot\n```\n\n\u003e :warning: This will only succeed when _all_ balances have been downloaded.\n\n## network\n\n### harvester\n\n_downloads harvester account information for a network_\n\nDownloads information about all accounts that recently harvested a block.\n\nExample: Retrieve all accounts that have harvested a block in the last \\~15 minutes (1% of a day) from the network described in `templates/nem.mainnet.yaml` and save the results to `harvesters.csv`.\n\n```sh\npython3 -m network.harvester --resources templates/nem.mainnet.yaml --days 0.01 --output nem_harvesters.csv\n```\n\n### nodes\n\n_downloads node information from a network_\n\nCrawls the entire network, connecting to each node individually in order to pull node information.\n\nExample: Discover all nodes connected to the network described in `templates/nem.mainnet.yaml` with a one second peer timeout and save the results to `nemnodes.json`.\n\n```sh\npython3 -m network.nodes --resources templates/nem.mainnet.yaml --timeout 1 --output nemnodes.json\n```\n\n### richlist_symbol\n\n_downloads high balance account information for a Symbol network_\n\nDownloads information about all accounts owning a specified mosaic with a balance above a threshold.\n\nExample: Retrieve all accounts with balances greater than 50M from the network described in `templates/symbol.mainnet.yaml` and save the results to `50M.csv`.\n\n```sh\npython3 -m network.richlist_symbol --resources templates/symbol.mainnet.yaml --min-balance 50000000 --output 50M.csv\n````\n\n### geolocation\n\n_downloads geolocation info from node list_\n\nRetrieve host information from nodes file (generated from network.nodes), convert host names to their corresponding IP addresses, and then make batch requests to IP-API.com to obtain geolocation information for each IP address.\n\nExample: The script can take an input file named `symbolnodes.json`, which contains the host information for a set of nodes, and then use this data to make requests to IP-API.com. The resulting geolocation information save to `geolocation.json`.\n\n\n```sh\npython3 -m network.geolocation --file ./symbolnodes.json --output geolocation.json\n```\n\n### nodeTracker\n\n_capture number of nodes in a network_\n\nsnapshot number of nodes in a network and append it to a time series file.\n\nExample: The script can take an input file named `symbol_nodes.json`, calculate node by roles and append the result to output file named `node_counts_symbol.json`.\n\n```sh\npython3 -m network.nodeTracker --input ./symbol_nodes.json --output node_counts_symbol.json\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsymbol%2Fmiscellaneous","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsymbol%2Fmiscellaneous","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsymbol%2Fmiscellaneous/lists"}