Skip to content

The program allows you to perform several actions in the EVM networks.

License

Notifications You must be signed in to change notification settings

SecorD0/evm-signer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

evm-signer

Content

DISCLAIMER

To the content

⠀The program has no injections — you can make the code review to make sure. Any cases of third parties gaining access to your wallets aren't the fault of the developer, but of you or another person. Keep your sensitive data in a safe place.

⠀By using this program you have agreed to the above and have no and won't have claims against its developer.

Description

To the content

⠀The program allows you to:

  • Generate a mnemonic (offline).
  • Retrieve a private key and an address from a mnemonic or a private key (offline).
  • Sign a sending transaction (offline).
  • Send a signed transaction.

Useful links

To the content

evm-signer

File structure

To the content

⠀The program use the following files and directories:

  • files — a user files directory:
    • qr_code.png — a QR code with an address or a signed transaction;
    • settings.json — a JSON file for program setup;
    • wallet.txt — a text file with a generated mnemonic or an inserted mnemonic or private key.
  • evm-signer.exe / app.py — an executable file that runs the program.

How to run

To the content

Windows

  1. Download an EXE file from the releases page.
  2. Create a folder and put the EXE file in it.
  3. Disconnect from the Internet.
  4. Run the program to create necessary files.
  5. Generate a wallet, if necessary, and exit the program.
  6. Configure the settings.json:
    • rpc — an RPC URL of the network in which you want to send tokens (used when sending a signed transaction).
    • mnemonic_or_private_key — a mnemonic or a private key of a wallet that which will sign the transaction.
    • chain_id — the chain ID in which the transaction will be sent. This can be found on the Chainlist website.
    • nonce — the wallet nonce. This can be found on the address page in Blockscan explorer.
    • token_contract_address — a token contract address or an empty string to send coin.
    • decimals — the coin or token decimals. This can be found on the token page in Blockscan explorer.
    • float_amount — the amount of coin or token to send.
    • recipient — the coin or token recipient.
    • gas_price — several gas price parameters that determine the type of transaction (type-2 if maxPriorityFeePerGas is specified, otherwise type-0):
      • maxFeePerGas — the bare minimum you will be charged to send a transaction on the network. This value can be found in Blockscan explorer.
      • maxPriorityFeePerGas — the tip to a miner.
    • gas_limit — the gas limit.
  7. Run the program again and enter 3 to sign the transaction.
  8. Send a hash of the signed transaction on a device that has internet access and send it to network. You can make it via this program (you need to provide a QR-code or a hash).
  9. Delete qr_code.png and clear the value of mnemonic_or_private_key in the settings.
  10. Connect to the Internet.
  11. In addition, there are other functions:
    • Generate a mnemonic.
    • Retrieve a private key and an address from a mnemonic or a private key.
    • Send a signed transaction.

Docker (image)

  1. Install Docker, in Ubuntu you can use the command:
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/docker.sh)
  1. Run the program the first time to create necessary files:
docker run -it --rm -v $HOME/evm-signer/files:/program/files --name evm-signer ghcr.io/secord0/evm-signer:main
  1. Generate a wallet, if necessary, and exit the program.
  2. Configure the settings.json:
    • rpc — an RPC URL of the network in which you want to send tokens (used when sending a signed transaction).
    • mnemonic_or_private_key — a mnemonic or a private key of a wallet that which will sign the transaction.
    • chain_id — the chain ID in which the transaction will be sent. This can be found on the Chainlist website.
    • nonce — the wallet nonce. This can be found on the address page in Blockscan explorer.
    • token_contract_address — a token contract address or an empty string to send coin.
    • decimals — the coin or token decimals. This can be found on the token page in Blockscan explorer.
    • float_amount — the amount of coin or token to send.
    • recipient — the coin or token recipient.
    • gas_price — several gas price parameters that determine the type of transaction (type-2 if maxPriorityFeePerGas is specified, otherwise type-0):
      • maxFeePerGas — the bare minimum you will be charged to send a transaction on the network. This value can be found in Blockscan explorer.
      • maxPriorityFeePerGas — the tip to a miner.
    • gas_limit — the gas limit.
  3. Run the program again and enter 3 to sign the transaction:
docker run -it --rm -v $HOME/evm-signer/files:/program/files --name evm-signer ghcr.io/secord0/evm-signer:main
  1. Send a hash of the signed transaction on a device that has internet access and send it to network. You can make it via this program (you need to provide a QR-code or a hash).
  2. Delete qr_code.png and clear the value of mnemonic_or_private_key in the settings.
  3. Connect to the Internet.
  4. In addition, there are other functions:
    • Generate a mnemonic.
    • Retrieve a private key and an address from a mnemonic or a private key.
    • Send a signed transaction.

Docker (building)

  1. Install Docker, in Ubuntu you can use the command:
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/docker.sh)
  1. Clone the repository:
git clone https://github.com/SecorD0/evm-signer
  1. Go to the repository:
cd evm-signer
  1. Build an image:
docker build -t evm-signer .
  1. Disconnect from the Internet.
  2. Run the program to create necessary files:
docker run -it --rm -v $HOME/evm-signer/:/program --name evm-signer evm-signer
  1. Generate a wallet, if necessary, and exit the program.
  2. Configure the settings.json:
    • rpc — an RPC URL of the network in which you want to send tokens (used when sending a signed transaction).
    • mnemonic_or_private_key — a mnemonic or a private key of a wallet that which will sign the transaction.
    • chain_id — the chain ID in which the transaction will be sent. This can be found on the Chainlist website.
    • nonce — the wallet nonce. This can be found on the address page in Blockscan explorer.
    • token_contract_address — a token contract address or an empty string to send coin.
    • decimals — the coin or token decimals. This can be found on the token page in Blockscan explorer.
    • float_amount — the amount of coin or token to send.
    • recipient — the coin or token recipient.
    • gas_price — several gas price parameters that determine the type of transaction (type-2 if maxPriorityFeePerGas is specified, otherwise type-0):
      • maxFeePerGas — the bare minimum you will be charged to send a transaction on the network. This value can be found in Blockscan explorer.
      • maxPriorityFeePerGas — the tip to a miner.
    • gas_limit — the gas limit.
  3. Run the program again and enter 3 to sign the transaction:
docker run -it --rm -v $HOME/evm-signer/:/program --name evm-signer evm-signer
  1. Send a hash of the signed transaction on a device that has internet access and send it to network. You can make it via this program (you need to provide a QR-code or a hash).
  2. Delete qr_code.png and clear the value of mnemonic_or_private_key in the settings.
  3. Connect to the Internet.
  4. In addition, there are other functions:
    • Generate a mnemonic.
    • Retrieve a private key and an address from a mnemonic or a private key.
    • Send a signed transaction.

Source code

  1. Install Python 3.8.
  2. Clone the repository:
git clone https://github.com/SecorD0/evm-signer
  1. Go to the repository:
cd evm-signer
  1. Set up an environment.
  2. Install requirements:
pip install -r requirements.txt
  1. Disconnect from the Internet.
  2. Run the app.py to create necessary files.
  3. Generate a wallet, if necessary, and exit the program.
  4. Configure the settings.json:
    • rpc — an RPC URL of the network in which you want to send tokens (used when sending a signed transaction).
    • mnemonic_or_private_key — a mnemonic or a private key of a wallet that which will sign the transaction.
    • chain_id — the chain ID in which the transaction will be sent. This can be found on the Chainlist website.
    • nonce — the wallet nonce. This can be found on the address page in Blockscan explorer.
    • token_contract_address — a token contract address or an empty string to send coin.
    • decimals — the coin or token decimals. This can be found on the token page in Blockscan explorer.
    • float_amount — the amount of coin or token to send.
    • recipient — the coin or token recipient.
    • gas_price — several gas price parameters that determine the type of transaction (type-2 if maxPriorityFeePerGas is specified, otherwise type-0):
      • maxFeePerGas — the bare minimum you will be charged to send a transaction on the network. This value can be found in Blockscan explorer.
      • maxPriorityFeePerGas — the tip to a miner.
    • gas_limit — the gas limit.
  5. Run the app.py again and enter 3 to sign the transaction.
  6. Send a hash of the signed transaction on a device that has internet access and send it to network. You can make it via this program (you need to provide a QR-code or a hash).
  7. Delete qr_code.png and clear the value of mnemonic_or_private_key in the settings.
  8. Connect to the Internet.
  9. In addition, there are other functions:
    • Generate a mnemonic.
    • Retrieve a private key and an address from a mnemonic or a private key.
    • Send a signed transaction.

⠀If you want to build the EXE file by yourself:

  • Install pyinstaller:
pip install pyinstaller
  • Build the EXE file:
pyinstaller app.py -Fn evm-signer -i images/icons/app.ico --add-binary "images/icons;images/icons" --add-binary "data\wordlist;eth_account\hdaccount\wordlist"

Sample settings

To the content

⠀Ethereum USDC

{
  "rpc": "https://rpc.ankr.com/eth/",
  "mnemonic_or_private_key": "YOUR_PRIVATE_KEY",
  "chain_id": 1,
  "nonce": 0,
  "token_contract_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
  "decimals": 6,
  "float_amount": 100.5,
  "recipient": "YOUR_ADDRESS",
  "gas_price": {
    "maxFeePerGas": 24.5,
    "maxPriorityFeePerGas": 0.1
  },
  "gas_limit": 65000
}

⠀Arbitrum ETH

{
  "rpc": "https://rpc.ankr.com/arbitrum/",
  "mnemonic_or_private_key": "YOUR_PRIVATE_KEY",
  "chain_id": 42161,
  "nonce": 5,
  "token_contract_address": "",
  "decimals": 18,
  "float_amount": 0.205815,
  "recipient": "YOUR_ADDRESS",
  "gas_price": {
    "maxFeePerGas": 0.1,
    "maxPriorityFeePerGas": 0.0
  },
  "gas_limit": 630000
}

⠀Arbitrum USDT

{
  "rpc": "https://rpc.ankr.com/arbitrum/",
  "mnemonic_or_private_key": "YOUR_PRIVATE_KEY",
  "chain_id": 42161,
  "nonce": 6,
  "token_contract_address": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
  "decimals": 6,
  "float_amount": 64.1047,
  "recipient": "YOUR_ADDRESS",
  "gas_price": {
    "maxFeePerGas": 0.1,
    "maxPriorityFeePerGas": 0.0
  },
  "gas_limit": 3000000
}

⠀Optimism ETH

{
  "rpc": "https://rpc.ankr.com/optimism/",
  "mnemonic_or_private_key": "YOUR_PRIVATE_KEY",
  "chain_id": 10,
  "nonce": 3,
  "token_contract_address": "",
  "decimals": 18,
  "float_amount": 0.01518,
  "recipient": "YOUR_ADDRESS",
  "gas_price": {
    "maxFeePerGas": 0.001,
    "maxPriorityFeePerGas": 0.0
  },
  "gas_limit": 21000
}

⠀Optimism USDC

{
  "rpc": "https://rpc.ankr.com/optimism/",
  "mnemonic_or_private_key": "YOUR_PRIVATE_KEY",
  "chain_id": 10,
  "nonce": 4,
  "token_contract_address": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607",
  "decimals": 6,
  "float_amount": 38.25,
  "recipient": "YOUR_ADDRESS",
  "gas_price": {
    "maxFeePerGas": 0.001,
    "maxPriorityFeePerGas": 0.0
  },
  "gas_limit": 52000
}

⠀Polygon USDC

{
  "rpc": "https://polygon-rpc.com/",
  "mnemonic_or_private_key": "YOUR_PRIVATE_KEY",
  "chain_id": 137,
  "nonce": 15,
  "token_contract_address": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
  "decimals": 6,
  "float_amount": 30.4147,
  "recipient": "YOUR_ADDRESS",
  "gas_price": {
    "maxFeePerGas": 315.22,
    "maxPriorityFeePerGas": 15.65
  },
  "gas_limit": 100000
}

Updating

To the content

Windows

  1. Download an EXE file of the new version from the releases page and replace the old one with it.

GitHub image

  1. Stop the container:
docker stop evm-signer
  1. Remove the container:
docker rm evm-signer
  1. Update the image:
docker pull ghcr.io/secord0/evm-signer:main

Self-built image

  1. Stop the container:
docker stop evm-signer
  1. Remove the container:
docker rm evm-signer
  1. Go to the repository:
cd evm-signer
  1. Update the local files:
git pull
  1. Rebuild the image:
docker build -t evm-signer .

Source code

  1. Go to the repository:
cd evm-signer
  1. Update the local files:
git pull

Useful commands

To the content

⠀To run the program (GitHub image):

docker run -it --rm -v $HOME/evm-signer/files:/program/files --name evm-signer ghcr.io/secord0/evm-signer:main

⠀To run the program (self-built image):

docker run -it --rm -v $HOME/evm-signer/:/program --name evm-signer evm-signer

⠀To remove the container:

docker stop evm-signer; docker rm evm-signer

Report a bug or suggest an idea

To the content

⠀If you found a bug or have an idea, go to the link, select the template, fill it out and submit it.

Express your gratitude

To the content

⠀You can express your gratitude to the developer by sending fund to crypto wallets!

  • Address of EVM networks (Ethereum, Polygon, BSC, etc.): 0x900649087b8D7b9f799F880427DacCF2286D8F20
  • USDT TRC-20: TNpBdjcmR5KzMVCBJTRYMJp16gCkQHu84K
  • SOL: DoZpXzGj5rEZVhEVzYdtwpzbXR8ifk5bajHybAmZvR4H
  • BTC: bc1qs4a0c3fntlhzn9j297qdsh3splcju54xscjstc

About

The program allows you to perform several actions in the EVM networks.

Topics

Resources

License

Stars

Watchers

Forks

Packages