{"id":50732441,"url":"https://github.com/mybucks-online/wallet-toolkit","last_synced_at":"2026-06-10T10:01:33.469Z","repository":{"id":355530035,"uuid":"1167453805","full_name":"mybucks-online/wallet-toolkit","owner":"mybucks-online","description":"Node.js CLI for mybucks.online disposable wallets: generate CSV rows, parse #wallet= links, distribute native + USDT on EVM.","archived":false,"fork":false,"pushed_at":"2026-05-14T03:06:34.000Z","size":82,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-14T05:10:24.051Z","etag":null,"topics":["cli","csv-export","ethereum","ethers","nodejs","random-generation","scrypt"],"latest_commit_sha":null,"homepage":"https://app.mybucks.online","language":"JavaScript","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/mybucks-online.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-26T10:05:16.000Z","updated_at":"2026-05-14T03:06:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mybucks-online/wallet-toolkit","commit_stats":null,"previous_names":["mybucks-online/generate-wallet","mybucks-online/wallet-toolkit"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mybucks-online/wallet-toolkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mybucks-online%2Fwallet-toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mybucks-online%2Fwallet-toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mybucks-online%2Fwallet-toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mybucks-online%2Fwallet-toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mybucks-online","download_url":"https://codeload.github.com/mybucks-online/wallet-toolkit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mybucks-online%2Fwallet-toolkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34146870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"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":["cli","csv-export","ethereum","ethers","nodejs","random-generation","scrypt"],"created_at":"2026-06-10T10:01:32.172Z","updated_at":"2026-06-10T10:01:33.464Z","avatar_url":"https://github.com/mybucks-online.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wallet-toolkit\n\n## Summary\n\n**Scripts:** This repository contains **Node.js** scripts for [mybucks.online](https://mybucks.online) disposable wallets:\n\n- **Generate** CSV wallet rows.\n- **Parse** `#wallet=` gifting links into passphrase / PIN / network / address.\n- **Distribute** native coin and **USDT** into those wallets (one recipient at a time).\n- **Prepare batch distribution input** with `src/disperse-input.js` (`address amount` rows for disperse.app).\n- RPC and token settings live under `src/conf/` (`evm.js`, `erc20.json`, ...).\n\n| Script | Command | Purpose |\n|--------|---------|---------|\n| Toolkit help menu | `node index.js` / `npm run help` | Prints a quick overview of all available scripts with examples. |\n| Generate wallets | `node src/generate.js` … | CSV rows with pin, address, token, link (no passphrase in CSV). |\n| Parse transfer link | `node src/parse.js` | Interactive: paste `#wallet=…` links, print decoded fields + EVM address. |\n| Distribute (one at a time) | `node src/distribute.js [network]` | Interactive: native top-up + USDT per recipient address. |\n| Disperse input converter | `node src/disperse-input.js \u003cwallets.csv\u003e \u003camount\u003e` | Converts wallet CSV into `address amount` rows for [disperse.app](https://disperse.app). |\n\nAll scripts that touch RPC or `.env` expect you to run them from the **project root** so `dotenv` and paths like `src/conf/…` resolve correctly.\n\n## Install\n\n```bash\nnpm install\n```\n\n## Toolkit help (`index.js`)\n\nPrint a brief CLI overview with examples:\n\n```bash\nnode index.js\n# or\nnpm run help\n```\n\n## Generate wallets (`src/generate.js`)\n\nEach generated wallet is one **CSV** line:\n\n```\npin,address,network,walletToken,transferLink\n```\n\nThe **passphrase is not included in the CSV** because it contains fully random\ncharacters (including commas and quotes) that frequently break CSV parsing in\ntools like Google Sheets. The passphrase can always be recovered later from\nthe `walletToken`.\n\n### Example output\n\n```csv\npin,address,network,walletToken,transferLink\nRAaxq6,0x1Ec17EbD74e80E9afB0b5CB7291d5a9c51b0b1F8,polygon,ncE9iqX2tXN1BPLT1TVnhQdi0xeDJPKjgtMXM9MnhSAlJBYXhxNgJldGhlcmV1bQ==CpGUYu,https://app.mybucks.online/#wallet=ncE9iqX2tXN1BPLT1TVnhQdi0xeDJPKjgtMXM9MnhSAlJBYXhxNgJldGhlcmV1bQ==CpGUYu\nkssUmm,0x263a79FC3EeF9D256a60AAB7f0E5954F6de0916F,polygon,-e42AYTCNRcjJ4LUtzWWxxdC1zSGZiSyMtUVF0dyRCAmtzc1VtbQJldGhlcmV1bQ==XbzB2U,https://app.mybucks.online/#wallet=-e42AYTCNRcjJ4LUtzWWxxdC1zSGZiSyMtUVF0dyRCAmtzc1VtbQJldGhlcmV1bQ==XbzB2U\n```\n\n## Usage\n\n`src/generate.js` argument format:\n\n```bash\nnode src/generate.js [count] [network]\n```\n\n- `count` is optional (default `1`)\n- `network` is optional (default `polygon`)\n\n### Generate 1 wallet\n\n```bash\nnode src/generate.js\n# or\nnpm run generate\n```\n\n### Generate multiple wallets\n\n```bash\nnode src/generate.js 10\n# or\nnpm run generate -- 10\n```\n\n### Specify network (default: polygon)\n\nSupported networks: `ethereum`, `polygon`, `arbitrum`, `optimism`, `bsc`, `avalanche`, `base`, `tron`\n\n```bash\nnode src/generate.js 10 ethereum\n# or\nnpm run generate -- 10 ethereum\n```\n\n## Parse transfer link (`src/parse.js`)\n\nDecodes a **`#wallet=…`** URL from [mybucks.online](https://mybucks.online): reads the token with `parseToken`, recomputes the wallet hash and **EVM address**, and prints passphrase, PIN, network, legacy flag, hash, and address.\n\n### Usage\n\n```bash\nnode src/parse.js\n```\n\nRuns an **infinite loop**: prompt **`🟢 transferLink:`**, paste a full URL, press Enter. Empty lines are ignored; **Ctrl+C** or **Ctrl+D** (EOF) exits. Errors print a message and the loop continues.\n\nNo `.env` is required unless you add your own tooling.\n\n## Distribute funds (`src/distribute.js`)\n\nSends **native token** (for gas) and then **USDT** to a recipient address. The sender (“funder”) is the EVM wallet derived from `FUNDER_PASSPHRASE` and `FUNDER_PIN` via `@mybucks.online/core` (`generateHash`, `getEvmPrivateKey`), same idea as generated disposable wallets.\n\nRPC URLs come from `src/conf/evm.js` and use **`INFURA_API_KEY`** where configured. Load variables from a **`.env`** file in the project root (`dotenv` is applied when the script starts). The USDT contract uses the ABI in **`src/conf/erc20.json`**.\n\n### Environment variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `INFURA_API_KEY` | Yes (for Infura-backed chains) | Used in RPC URLs in `evm.js`. |\n| `FUNDER_PASSPHRASE` | Yes | Funder wallet passphrase. |\n| `FUNDER_PIN` | Yes | Funder wallet PIN. |\n| `GAS_TOPUP_ETH` | No | Native amount per recipient (default `0.03` if unset). Use `0` to skip the native leg each round. |\n| `USDT_AMOUNT` | No | USDT amount per recipient (default `3`). Use `0` to skip the USDT leg. |\n\n### Usage\n\n```bash\nnode src/distribute.js [network]\n```\n\n`network` defaults to **`polygon`** if omitted (e.g. `node src/distribute.js` or `node src/distribute.js polygon`). Then an interactive loop prompts only for **`🟢 recipientAddress:`** each round. **Ctrl+C** or **Ctrl+D** (EOF) on that prompt exits.\n\nSupported network names match `src/conf/evm.js` (e.g. `ethereum`, `polygon`, `arbitrum`, `optimism`, `bsc`, `avalanche`, `base`).\n\n### Behaviour\n\n1. Resolves the chain from the `[network]` argument once (RPC + funder wallet reused for every recipient).\n2. For each round, reads one recipient address from stdin.\n3. Prints network, funder `from`, recipient `to`, and planned native / USDT amounts.\n4. Shows **Please confirm to distribute gas fee (native token) first.** then **Press any key to continue...** (TTY: any key; non-TTY: press Enter).\n5. Estimates gas for the native transfer (with a buffer), broadcasts it, waits for confirmation.\n6. Shows **Please confirm to distribute USDT next.** and waits again.\n7. Estimates gas for the USDT `transfer`, broadcasts it, waits for confirmation.\n\nIf a round fails (bad address, RPC error, etc.), the error is printed and the loop continues.\n\nGas fees are taken from the RPC (Polygon does not use the public gas station URL that ethers would otherwise call for chain `137`).\n\n### Example output\n\n```text\nnetwork: polygon (137)\nfrom: 0x19Ed87E3a5dD45525cd7bDd3b3ADBA501BDe4A2b\nto: 0x762F330Af76553Db690CE7D54926bA6be173E8e6\nnative top-up: 0.03 (native)\nUSDT transfer: 3\nPlease confirm to distribute gas fee (native token) first.\nPress any key to continue...\nnativeGasEstimate: 21000 (limit 25200 with buffer)\nnativeTopupTx: 0x66297df2183576053f2e4f6a78ee24c6fcdea3832d79bb3b2c631b2d336b0705\nnativeTopupAmount: 0.03\nPlease confirm to distribute USDT next.\nPress any key to continue...\nusdtGasEstimate: 67571 (limit 81086 with buffer)\nusdtTx: 0x66e75d5a8c4c51922e9919e88e6252ef4f7e918455a80633020b070bc03e2489\nusdtAmount: 3\n```\n\n## Batch distribution\n\nFor batch distribution of ETH and USDT to multiple addresses, this toolkit currently recommends [disperse.app](https://disperse.app).\nDisperse.app expects rows in `address amount` format, so this toolkit provides `src/disperse-input.js` to convert generated wallet CSV files into compatible rows.\n\n## Convert CSV for Disperse (`src/disperse-input.js`)\n\nConverts a generated wallet CSV (`pin,address,network,walletToken,transferLink`) into:\n\n```text\naddress amount\n```\n\nThis is the format accepted by [disperse.app](https://disperse.app).\n\n### Usage\n\n```bash\nnode src/disperse-input.js \u003cwallets.csv\u003e \u003camount\u003e [--no-dedupe]\n```\n\n### Example\n\n```bash\nnode src/generate.js 10 polygon \u003e wallets.csv\nnode src/disperse-input.js wallets.csv 0.01 \u003e disperse.txt\n```\n\n`disperse.txt` will contain one line per wallet like:\n\n```text\n0xAbc...123 0.01\n0xDef...456 0.01\n```\n\nNotes:\n- By default, duplicate addresses are removed (first occurrence kept).\n- Use `--no-dedupe` to keep duplicates as-is.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmybucks-online%2Fwallet-toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmybucks-online%2Fwallet-toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmybucks-online%2Fwallet-toolkit/lists"}