Crypto1010 is a command-line blockchain wallet simulator. It supports account login/registration, wallet creation, key generation, wallet-to-address transfers, account-to-account transfers, balance queries, wallet history lookup, and blockchain validation.
The application is designed for educational use and records transactions in a simple blockchain persisted as JSON. Each account has its own isolated wallets, blockchain data, and transaction history after login.
helptutorialcreatelistkeygenbalancesendcrossSendhistoryvalidateviewchainviewblocklogoutexit
crypto1010.jar release file. java -jar crypto1010.jar
login or register, then enter your username and password to access your account-specific wallets and blockchain data. ./gradlew run
On Windows PowerShell:
.\gradlew run
register if you are a new user. Registration logs you in immediately after the account is created.login if you already have an account.logout after login if you want to return to account access and switch users without closing the app.1, 2, 3, login, register, and exit._, or -.
USERNAME@crypto1010 ~.1, 2, 3, login, register, exit.w/, curr/, speed/).viewblock INDEXviewblock 22 viewblockUPPER_CASE are required parameters.viewblock INDEXviewblock 2viewblock[UPPER_CASE] are optional.help [c/COMMAND]helphelp c/createcreate w/WALLET_NAMEcreate w/alicecreate alicecreate name/alicesend w/WALLET_NAME to/RECIPIENT_ADDRESS amt/AMOUNTsend w/bob to/0x1111111111111111111111111111111111111111 amt/1.5send w/bob to/0x1111111111111111111111111111111111111111 amt/1.5send w/bobto/0x1111111111111111111111111111111111111111amt/1.5viewblock INDEXviewblock 2viewblock twoviewblock -2validate anything is interpreted as validate.
help: Display command helpFormat: help [c/COMMAND]
Examples:
helphelp c/send
tutorial: Enter tutorial modeFormat: tutorial start
tutorial exit to leave tutorial mode.exit during tutorial to exit the app globally.
create: Create a walletFormat: create w/WALLET_NAME [curr/CURRENCY]
|.network, network-fee, system, coinbase, genesis, and names starting with external: cannot be used.CURRENCY can only be eth or btc for ethereum and bitcoin wallet types respectively.curr/ is optional. Not including curr/CURRENCY results in a wallet with generic currency code.crossSend.Examples:
create w/alicecreate w/bobcreate w/main curr/btc
list: List walletsFormat: list
0x... addresses. Bitcoin wallets use legacy Base58 addresses.
keygen: Generate keys for a walletFormat: keygen w/WALLET_NAME
send requires sender key generation. Run keygen on the sender wallet before using send.Example:
keygen w/alice
balance: Show wallet balanceFormat: balance w/WALLET_NAME
0.00000000.Example:
balance w/bob
send: Create a transfer transactionFormat: send w/WALLET_NAME to/RECIPIENT_ADDRESS amt/AMOUNT [speed/SPEED] [fee/FEE] [note/MEMO]
slow, standard, fastfee/ is omitted, fee is chosen by speed:
slow: 0.0005standard: 0.0010fast: 0.0020fee/ is provided, it overrides speed-based fee.fee/ is provided, speed/ becomes informational only. Even a non-standard speed/... value is accepted, and the result is shown as manual.AMOUNT + FEE.to/RECIPIENT_ADDRESS matches a wallet address in the current account, the blockchain records the receiver by wallet name and that wallet’s balance increases accordingly.note/ captures the remainder of input after it appears.note/ must be placed at the last position.note/, later tokens must not start with w/, to/, amt/, speed/, or fee/, or the command is rejected.Examples:
send w/bob to/0x1111111111111111111111111111111111111111 amt/1.5send w/bob to/0x1111111111111111111111111111111111111111 amt/2 speed/fastsend w/bob to/0x1111111111111111111111111111111111111111 amt/2 fee/0.02 note/Urgent payment
crossSend: Cross-account transferFormat: crossSend acc/ACCOUNT_NAME amt/AMOUNT curr/CURRENCY
AMOUNT from the current account’s wallet tagged with CURRENCY to another account user.CURRENCY, Crypto1010 creates one automatically.CURRENCY, and it must have enough balance.Examples:
crossSend acc/alice amt/2 curr/btccrossSend acc/bob amt/0.5 curr/eth
history: Show wallet send historyFormat: history w/WALLET_NAME
Example:
history w/bob
validate: Validate blockchain integrityFormat: validate
viewchain: View blockchain overviewFormat: viewchain
Example:
viewchain
viewblock: View one blockFormat: viewblock INDEX
Example:
viewblock 2
logout: Log out of the current accountFormat: logout
logout, Crypto1010 prompts for confirmation.y to confirm logout or n to stay in the current account.
exit: Save and terminateFormat: exit
Based on planned work tracked in project discussions/issues, the next user-facing feature is:
This feature is not available yet in the current release.
help [c/COMMAND]tutorial startcreate w/WALLET_NAME [curr/CURRENCY]listkeygen w/WALLET_NAMEbalance w/WALLET_NAMEsend w/WALLET_NAME to/RECIPIENT_ADDRESS amt/AMOUNT [speed/SPEED] [fee/FEE] [note/MEMO]crossSend acc/ACCOUNT_NAME amt/AMOUNT curr/CURRENCYhistory w/WALLET_NAMEvalidateviewchainviewblock INDEXlogoutexit
data/accounts/credentials.txt.data/accounts/credentials.key.data/accounts/USERNAME/blockchain.json.data/accounts/USERNAME/wallets.txt.keygen w/WALLET_NAME again for that wallet.
Q: Do different users share wallets and blockchain data?
A: No. Each login account gets its own wallet list and blockchain file under its account directory.
Q: Where is my blockchain data stored?
A: In data/accounts/USERNAME/blockchain.json for the currently logged-in account.
Q: Can I access and change wallet attributes in the text file directly?
A: Tampering with saved files is heavily discouraged as many attributes are cryptographically determined, hence tampering can easily cause issues.
In the program, many edits to the save files will cause corruption, hence the file data will often not be loaded for safety purposes.
Q: Why am I blocked from login even with the correct password?
A: After repeated failed attempts, that username is locked for 30 seconds. Wait and retry.
Q: Can I transfer to a wallet name directly?
A: send requires a recipient address string in to/. For direct account-to-account transfer, use crossSend acc/ACCOUNT_NAME amt/AMOUNT curr/CURRENCY.
Q: What happens if I send to a wallet address that belongs to another wallet in my current account?
A: The app resolves that address to the matching local wallet name and credits that wallet on-chain. This is only for wallets in the current logged-in account.
Q: What does history show?
A: history w/WALLET_NAME shows the wallet’s recorded outgoing send history, not every blockchain transfer involving that wallet.