All Projects → hiromaily → go-crypto-wallet

hiromaily / go-crypto-wallet

Licence: MIT license
Cryptocurrency wallet for trading for Bitcoin, Bitcoin cash, Ethereum, ERC20, Ripple

Programming Languages

go
31211 projects - #10 most used programming language
javascript
184084 projects - #8 most used programming language
shell
77523 projects
Makefile
30231 projects
typescript
32286 projects
Smarty
1635 projects

Projects that are alternatives of or similar to go-crypto-wallet

Hdwallet
Simple Swift library for creating HD cryptocurrencies wallets and working with crypto Coins/ERC20 tokens.
Stars: ✭ 80 (+35.59%)
Mutual labels:  bitcoin-wallet, erc20
desktop
CoinApp is a simple to use minimal Cryptocurrency Wallet for Ethereum, ERC20 Tokens, Bitcoin and Litecoin built for Windows, Mac and Linux.
Stars: ✭ 60 (+1.69%)
Mutual labels:  bitcoin-wallet, erc20
awesome-ico-truths
Awesome Initial Coin Offerings (ICO) Truths - The Art of the Steal - The Scammers' Big Lies ++ ICO tokens are like bitcoins, ICOs are like IPOs, ICO White Papers are like "Due Diligence" Inverstor Prospectus, ...
Stars: ✭ 32 (-45.76%)
Mutual labels:  erc20
ckcc-protocol
Python library and command line tool for communicating with your Coldcard over USB
Stars: ✭ 48 (-18.64%)
Mutual labels:  bitcoin-wallet
defi-dapps-solidity-smart-contracts
This is a Web 3 Smart Contract learning and teaching repo which will be used to teach students all across Pakistan.
Stars: ✭ 241 (+308.47%)
Mutual labels:  erc20
adequate crypto address
A Ruby Library for dealing with validation cryptocurrency addresses
Stars: ✭ 18 (-69.49%)
Mutual labels:  ripple
cryptocoins-desklet-cinnamon
Cryptocurrency Ticker (Desklet) for Cinnamon Desktop that displays the current price for thousands of cryptocurrencies, and their daily percent changes.
Stars: ✭ 18 (-69.49%)
Mutual labels:  ripple
jswallet
An experimental Bitcoin Wallet in Electron + React.js
Stars: ✭ 91 (+54.24%)
Mutual labels:  bitcoin-wallet
Valets
Command line wallets generator (Bitcoin, Bitcoin cash, Ethereum, Ethereum classic, Dash, Zcash, Dogecoin, Litecoin, Navcoin, Vertcoin, Reddcoin, Emercoin)
Stars: ✭ 46 (-22.03%)
Mutual labels:  bitcoin-wallet
leptin
🔗 Leptin is a PoW blockchain completely built in Nodejs.
Stars: ✭ 57 (-3.39%)
Mutual labels:  bitcoin-wallet
zeneth
🏵️ Let Your ETH Chill — Gasless Ethereum account abstraction with Flashbots
Stars: ✭ 112 (+89.83%)
Mutual labels:  erc20
dollar
Gemini dollar contract source code
Stars: ✭ 79 (+33.9%)
Mutual labels:  erc20
v1-contracts
🐍Uniswap V1 smart contracts
Stars: ✭ 430 (+628.81%)
Mutual labels:  erc20
arcbit-web
arcbit - web wallet http://arcbit.io
Stars: ✭ 31 (-47.46%)
Mutual labels:  bitcoin-wallet
scpx-wallet
Scoop Wallet: Core open-source, multi-asset & cross-platform CLI
Stars: ✭ 18 (-69.49%)
Mutual labels:  erc20
ethereum-crowdsale
0xcert protocol crowdsale contracts for Ethereum blockchain.
Stars: ✭ 15 (-74.58%)
Mutual labels:  erc20
SmartHold-contracts
Ethereum Smart Contracts for locking your Ether and ERC20 tokens based on time and price conditions
Stars: ✭ 23 (-61.02%)
Mutual labels:  erc20
storj-wallet
Storj Wallet for Windows, Mac and Linux. Send and Receive Storj ERC20 Token and Ethereum (unofficial)
Stars: ✭ 13 (-77.97%)
Mutual labels:  erc20
v2-periphery
🎚 Peripheral smart contracts for interacting with Uniswap V2
Stars: ✭ 900 (+1425.42%)
Mutual labels:  erc20
RippleLayout
水波纹选中控件(A ripple layout with selected state)
Stars: ✭ 25 (-57.63%)
Mutual labels:  ripple

go-crypto-wallet

Go Report Card codebeat badge GitHub release MIT License

Wallet functionalities to create raw transaction, to sing on unsigned transaction, to send signed transaction for BTC, BCH, ETH, XRP and so on.

What kind of coin can be used?

  • Bitcoin
  • Bitcoin Cash
  • Ethereum
  • ERC-20 Token
  • Ripple

Current development

  • This project is under refactoring
  • Bitcoin Core version 22.0 is released. Signet environment is ongoing.

Expected use cases

1.Deposit functionality

  • Pubkey addresses are given to our users first.
  • Users would want to deposit coins on our system.
  • After users sent coins to their given addresses, these all amount of coins are sent to our safe addresses managed offline by cold wallet

2.Payment functionality

  • Users would want to withdraw their coins to specific addresses.
  • Transaction is created and sent after payment is requested by users.

3.Transfer functionality

  • Internal use. Each accounts can transfer coins among internal accounts.

Wallet Type

This is explained for BTC/BCH for now.
There are mainly 3 wallets separately and these wallets are expected to be installed in each different devices.

1.Watch only wallet

  • Only this wallet run online to access to BTC/BCH Nodes.
  • Only pubkey address is stored. Private key is NOT stored for security reason. That's why this is called watch only wallet.
  • Major functionalities are
    • creating unsigned transaction
    • sending signed transaction
    • monitoring transaction status.

2.Keygen wallet as cold wallet

  • Key management functionalities for accounts.
  • This wallet is expected to work offline.
  • Major functionalities are
    • generating seed for accounts
    • generating keys based on HD Wallet
    • generating multisig addressed according to account setting
    • exporting pubkey addresses as csv file which is imported from Watch only wallet
    • signing on unsigned transaction as first sign. However, multisig addresses could not be completed by only this wallet.

3.Sign wallet as cold wallet (Auth wallet)

  • The internal authorization operators would use this wallet to sign on unsigned transaction for multisig addresses.
  • Each of operators would be given own authorization account and Sing wallet apps.
  • This wallet is expected to work offline.
  • Major functionalities are
    • generating seed for accounts for own auth account
    • generating keys based on HD Wallet for own auth account
    • exporting full-pubkey addresses as csv file which is imported from Keygen wallet to generate multisig address
    • signing on unsigned transaction as second or more signs for multisig addresses.

Workflow diagram

BTC

1. Generate keys

generate keys

2. Create unsigned transaction, Sign on unsigned tx, Send signed tx for non-multisig address.

create tx

3. Create unsigned transaction, Sign on unsigned tx, Send signed tx for multisig address.

create tx for multisig

Requirements

Directory Structure

  • cmd ... app directories including main.go
    • keygen ... keygen wallet
    • sign ... sign wallet
    • watch ... watch wallet
  • data
    • address ... generated files by this CLI
    • certs ... for docker volume directory used by docker-compose.xrp.yml
    • config ... config toml files
    • contract ... generated token abi file
    • dump ... BTC wallet file generated by api dumpwallet command. See Makefile.
    • fullpubkey ... generated files by this CLI
    • gaiad ... genesis.json for cosmos gaiad
    • keystore ... keystore for Ethereum
    • proto ... proto files for ripple gRPC communication
  • docker ... docker resources
  • docs ... documents
  • images ... for only docs
  • pkg ... go files
  • scripts ... shell scripts
  • templates ... template file for sqlboiler Go ORM
  • web
    • erc20-token ... erc20 token contract
    • ripple-lib-server ... Ripple gRPC server

pkg Directory Structure

Note, explained only well modified packages

  • wallet/api/btcgrp ... Bitcoin RPC APIs. API References
  • wallet/api/ethgrp ... Ethereum RPC APIs. API References
  • wallet/api/xrpgrp ... Ripple gRPC client to communicate with ripple-lib-server
  • wallet/key ... address/seed generation logic
  • wallet/service/btc ... Bitcoin business logic
  • wallet/service/eth ... Ethereum business logic
  • wallet/service/xrp ... Ripple business logic
  • wallet/service/coldsrv ... Cold Wallet common business logic
  • wallet/service/watchsrv ... Watch Wallet common business logic

Components inside repository

  • ripple-lib-server
    • ./web/ripple-lib-server
  • erc20-token
    • ./web/erc20-token

Installation

Installation

Operation example

Command example

TODO

Basics

For BTC/BCH

  • Setup Signet environment for development use
  • Fix overpaying fee issue on Signet. It says 725% overpaying.
  • native SegWit-Bech32
  • Multisig-address is used only once because of security reason, so after tx is sent, related receiver addresses should be updated by is_allocated=true.
  • Sent tx is not proceeded in bitcoin network if fee is not enough comparatively. So re-sending tx functionality is required adding more fee.

For ERC20 token

  • Add any useful APIs using contract equivalent to ETH APIs
  • Monitoring for ERC20 token

For ETH

  • Make sure that quantity-tag is used properly. e.g. when getting balance, which quantity-tag should be used, latest or pending.
  • Handling secret of private key properly. Password could be passed from command line argument.

For XRP

  • Handling secret of private key properly. Password could be passed from command line argument.

Project layout patterns

  • The pkg layout pattern, refer to the linked URLs for details.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].