https://github.com/mybucks-online/app
Password-only, self-custodial cryptocurrency wallet. No register, no seed phrases!
https://github.com/mybucks-online/app
alchemy alchemysdk blockchain cryptowallet dapp erc20 ethereum keccak256 opensource-projects password-hashing privatekey-generator react scrypt styled-components tron web3
Last synced: 3 months ago
JSON representation
Password-only, self-custodial cryptocurrency wallet. No register, no seed phrases!
- Host: GitHub
- URL: https://github.com/mybucks-online/app
- Owner: mybucks-online
- License: mit
- Created: 2024-08-27T16:50:43.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-01-17T03:39:04.000Z (4 months ago)
- Last Synced: 2025-01-31T02:34:12.452Z (4 months ago)
- Topics: alchemy, alchemysdk, blockchain, cryptowallet, dapp, erc20, ethereum, keccak256, opensource-projects, password-hashing, privatekey-generator, react, scrypt, styled-components, tron, web3
- Language: JavaScript
- Homepage: https://app.mybucks.online
- Size: 2.48 MB
- Stars: 6
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
https://github.com/user-attachments/assets/4eba2af8-9d32-4ad2-b5b8-b2f3e9ed2da8
# mybucks.online
## Summary
Mybucks.online is a **password-only, self-custodial cryptocurrency wallet** built with [React.js](https://react.dev). It generates a private key from your password and passcode using an industry-standard, verified **one-way hash function**. Your private key forms your account, allowing you to transfer, receive, and hold your crypto assets permanently.
## How to Use
1. Visit `app.mybucks.online`.
2. Input your password, confirmation, and passcode.
Test credentials:
password: **DemoAccount5&**
passcode: **112324**
3. Click `Open`.(This process is the same for both initial opening and all subsequent uses.)

![]()
![]()
![]()
## Key Points
### Privacy Protection
- **No Registration Required:** No need for personal information, not even your email address.
- **Absolute Privacy:** Nobody knows who you are; nobody stores your password.
- **Transient Data:** Your account is generated whenever you open it. Closing or refreshing your browser erases all traces/history.
- **Share your wallet address:** its origin remains unknown.### Security
- **One-Way Hash Function:** Utilizes [**scrypt**](https://en.wikipedia.org/wiki/Scrypt) and [**keccak256**](https://en.wikipedia.org/wiki/SHA-3). Your password determines a unique private key.
- **Resistance to Attacks:** Brute force attacks would take centuries. A strong password ensures asset protection.### Ease of Use
- **Simple Access:** Only requires a password, no 12-word seed phrases.
- **No KYC Hassles:** No worries about KYC or suspensions.
- **Private Key Portability:** Backup your password/private key. Import into Metamask to use across DeFi products.## Generate the private key
This demonstrates how to generate a private key from your `password` and `passcode` and helps you understand the process.
```javascript
import { Buffer } from "buffer";
import { ethers } from "ethers";
import { scrypt } from "scrypt-js";const HASH_OPTIONS = {
N: 32768, // CPU/memory cost parameter, 2^15
r: 8, // block size parameter
p: 5, // parallelization parameter
keyLen: 64,
};// password: at least 12 characters user input, lowercase, uppercase, digits, and special characters
// passcode: at least 6 characters
async function generatePrivateKey(password, passcode) {
const salt = `${password.slice(-4)}${passcode}`const passwordBuffer = Buffer.from(password);
const saltBuffer = Buffer.from(salt);const hashBuffer = await scrypt(
passwordBuffer,
saltBuffer,
HASH_OPTIONS.N,
HASH_OPTIONS.r,
HASH_OPTIONS.p,
HASH_OPTIONS.keyLen,
(p) => console.log(Math.floor(p * 100))
);
const hashHex = Buffer.from(hashBuffer).toString("hex");
const privateKey = ethers.keccak256(abi.encode(["string"], [hashHex]));return privateKey;
}
```## Transfer Ownership
You can transfer all your holdings to family or friends in a few seconds by sharing your password only.
Send this short note to your friend in a private channel.```
mybucks.online / DemoAccount5& : 112324
```And you can even transfer wallet itself by using a URL:
https://app.mybucks.online/?wallet=VWnsSGRGVtb0FjY291bnQ1JgIxMTIzMjQCb3B0aW1pc20=_wNovTYou can extract this link in the `Backup` menu.
This feature allows you to transfer cryptocurrency `without asking recipient's address`.# About the Project
This is a fully open-source project built with React, Vite, and related third-party libraries such as:
- **scrypt-js**
Implements the `scrypt` hash function. Please check the npm registry [here](https://www.npmjs.com/package/scrypt-js).- **ethers**
A standard library for manipulating EVM accounts.- **alchemy-sdk**
Provides query functions for massive crypto assets in multiple networks.- **@sushiswap/default-token-list**
- **tronweb**
- **styled-components**
## How to Run
Please sign up for [Infura](https://infura.io), [Alchemy](https://alchemy.com/) and [Trongrid](https://trongrid.io/), create free API keys, and update the environment variables accordingly.
```bash
yarn install
cp .env.example .env
# Update the .env variables with valid keys
yarn dev
```*In the development environment, a different configuration is used to maintain fast response. To replicate the same key generation like the prod environment, you need to update the following line in src/lib/conf.js:*
```javascript
// src/lib/conf.js
p: import.meta.env.DEV ? 1 : 5, // parallelization parameter
```## Production Environment
The project uses `Github Pages` and `Github Actions` for deployment and is connected to a custom domain.
You can easily verify releases, deployments, and domain configuration:- [Actions](https://github.com/mybucks-online/app/actions)
- [Releases](https://github.com/mybucks-online/app/releases)
- [.github/workflows/main-pipeline.yml](https://github.com/mybucks-online/app/blob/master/.github/workflows/main-pipeline.yml)To check DNS settings:
```bash
nslookup
> app.mybucks.online
Server: 127.0.0.53
Address: 127.0.0.53#53Non-authoritative answer:
app.mybucks.online canonical name = mybucks-online.github.io.
Name: mybucks-online.github.io~~~
``````bash
dig app.mybucks.online;; ANSWER SECTION:
app.mybucks.online. 5 IN CNAME https://mybucks-online.github.io.
https://mybucks-online.github.io. 5 IN A 185.199.110.153
https://mybucks-online.github.io. 5 IN A 185.199.109.153
https://mybucks-online.github.io. 5 IN A 185.199.108.153
https://mybucks-online.github.io. 5 IN A 185.199.111.153~~~
```# Quick Links
- Website: https://mybucks.online
- Wallet: https://app.mybucks.online
- Docs: https://docs.mybucks.online
- Github: https://github.com/mybucks-online
- Discord: https://discord.gg/RTHgTePKgP
- X: https://x.com/mybucks_online
- Audit report: https://app.secure3.io/5c92d55acd# Core principles
Mybucks.online belongs to community, so we welcome any contributions!
As a contributor, please review the following principles:
- Never change key-generation mechanism, parameters (scrypt, keccak256)
- Never submit password
- Never store password including local storage
- Never use untrusted dependencies
- Never track user activitiesWe use Google Analytics and Google Tag Manager for landing page only.
- Keep the codebase simple