This my custom and simple crypto wallet, designed specifically for my needs:
- Uses a QR Signer, i.e a QR Hardware wallet, like Keystone or Airgap Vault.
- Privacy focused, does not leave any traces.
- Works behind Tor Proxy, by default, considered unsafe otherwise.
- Simple, Small, and fast interactive CLI Based.
This wallet should support these operations:
- Send Native Tokens.
- Send ERC-20 Tokens.
That's it, that is all I need for now, maybe in the future I will extend it more.
Currently, my wallet only supports Linux, I mean I would only use it on Tails OS with a USB Stick, so my only target for now, is Linux.
You can download it from Github Releases.
Just run shekozwallet
, that's it, the wallet will look for shekozwallet.json
config file and will load it
if the config file not found, the wallet will create a default one, you can customize it for your needs.
The wallet is interactive, it will first load and verify the config file, then follow the steps:
- Sync your Account, from your QR Hardware wallet.
- Ask about what operation you want to do, for example sending ERC-20 Tokens.
- after following the steps, it will create the Unsigned Transaction as a QR and ask you to sign it with your signer.
- Scanning the result and broadcasting the transaction to the network.
I've added a Small ERC20 token for testing, and since I'm using foundry toolchain, we can spin up a local node, and deploy the contract to it for tests.
- Install Foundry using https://getfoundry.sh/
- Start Anvil node
anvil --chain-id 1337 -m "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art"
- Copy the
tests/contracts/.env.example
file totests/contracts/.env
and add change thePRIVATE_KEY
env to the first private key that anvil printed. - Go to
tests/contracts
and run theforge update
thenforge script
command like the following:
cd tests/contracts
forge update
forge script DeployToken --rpc-url local -vvv --broadcast
it should deploy the token, and also print the contract address, Note that address we will need it later.
- In your Airgap wallet, import the following Seed:
abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art
- Compile and run the wallet:
cargo r
- Sync your account, and after that, do not make anything else, just shutdown the wallet (Ctrl+C).
- Modify
shekozwallet.json
and in thenetworks.local.erc20_tokens
add the token we deployed, like the following:
"local": {
"rpc_url": "http://localhost:8545",
"explorer_url": "http://localhost:3000",
"chain_id": "1337",
"currency_symbol": "ETH",
"erc20_tokens": [
{
"address": "0xbba109e735f49fb19fd9765aaa2cb79cc16c38d2",
"name": "USDTestToken",
"symbol": "USDT"
}
]
},
- Finally, run the wallet again, your account should be already synced, so you can use it and send some test ERC20 Tokens.
While this my custom wallet, and I do not expect anyone else using it too, However, I would be happy to see any contribution or suggestions. So feel free to open an issue to ask about any questions.
Really? Okay.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software is provided as is, and I am not responsible for any loss of funds, or any other damages, caused by using this software.