how-to-guide.mp4
Mybucks.online is a password-only, self-custodial cryptocurrency wallet built with React.js. It generates a private key from your password 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.
- Visit
app.mybucks.online
. - Input your password, confirmation, and passcode.
- Click
Open
.
(This process is the same for both initial opening and all subsequent uses.)
- 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.
- One-Way Hash Function: Utilizes scrypt and keccak256. Your password determines a unique private key.
- Resistance to Attacks: Brute force attacks would take centuries. A strong password ensures asset protection.
- 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.
Think of it like a public locker at a railway station:
- Find an empty box.
- Set up your password anonymously.
- Place your goods inside and lock.
Return later to access your goods with just your password—no ID checks required.
That's all! 🎉
This demonstrates how to generate a private key from your password
and passcode
and helps you understand the process.
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;
}
You can transfer all your holdings to family or friends in a few seconds by sharing your password only.
mybucks.online / mYpAssword987^5 : 239a8b
Send this short note to your friend in a private channel.
This is a fully open-source project built with React, Vite, and related third-party libraries such as:
-
scrypt-js
Implements thescrypt
hash function. Please check the npm registry here. -
ethers
A standard library for manipulating EVM accounts. -
@covalenthq/client-sdk
Provides query functions for massive crypto assets in multiple networks. -
@sushiswap/default-token-list
-
styled-components
Please sign up for Infura, GoldRush and Trongrid, create free API keys, and update the environment variables accordingly.
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:
// src/lib/conf.js
p: import.meta.env.DEV ? 1 : 5, // parallelization parameter
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:
To check DNS settings:
nslookup
> app.mybucks.online
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
app.mybucks.online canonical name = mybucks-online.github.io.
Name: mybucks-online.github.io
~~~
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
~~~
- 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
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 activities
We use Google Analytics and Google Tag Manager for landing page only.
-
Keep the codebase simple