- DISCLAIMER
- Description
- Useful links
- File structure
- How to run
- Sample settings
- Updating
- Useful commands
- Report a bug or suggest an idea
- Express your gratitude
⠀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.
⠀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.
⠀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.
- Download an EXE file from the releases page.
- Create a folder and put the EXE file in it.
- Disconnect from the Internet.
- Run the program to create necessary files.
- Generate a wallet, if necessary, and exit the program.
- 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
ifmaxPriorityFeePerGas
is specified, otherwisetype-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.
- Run the program again and enter
3
to sign the transaction. - 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).
- Delete
qr_code.png
and clear the value ofmnemonic_or_private_key
in the settings. - Connect to the Internet.
- 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.
- Install Docker, in Ubuntu you can use the command:
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/docker.sh)
- 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
- Generate a wallet, if necessary, and exit the program.
- 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
ifmaxPriorityFeePerGas
is specified, otherwisetype-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.
- 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
- 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).
- Delete
qr_code.png
and clear the value ofmnemonic_or_private_key
in the settings. - Connect to the Internet.
- 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.
- Install Docker, in Ubuntu you can use the command:
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/docker.sh)
- Clone the repository:
git clone https://github.com/SecorD0/evm-signer
- Go to the repository:
cd evm-signer
- Build an image:
docker build -t evm-signer .
- Disconnect from the Internet.
- Run the program to create necessary files:
docker run -it --rm -v $HOME/evm-signer/:/program --name evm-signer evm-signer
- Generate a wallet, if necessary, and exit the program.
- 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
ifmaxPriorityFeePerGas
is specified, otherwisetype-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.
- 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
- 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).
- Delete
qr_code.png
and clear the value ofmnemonic_or_private_key
in the settings. - Connect to the Internet.
- 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.
- Install Python 3.8.
- Clone the repository:
git clone https://github.com/SecorD0/evm-signer
- Go to the repository:
cd evm-signer
- Set up an environment.
- Install requirements:
pip install -r requirements.txt
- Disconnect from the Internet.
- Run the
app.py
to create necessary files. - Generate a wallet, if necessary, and exit the program.
- 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
ifmaxPriorityFeePerGas
is specified, otherwisetype-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.
- Run the
app.py
again and enter3
to sign the transaction. - 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).
- Delete
qr_code.png
and clear the value ofmnemonic_or_private_key
in the settings. - Connect to the Internet.
- 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"
⠀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
}
- Download an EXE file of the new version from the releases page and replace the old one with it.
- Stop the container:
docker stop evm-signer
- Remove the container:
docker rm evm-signer
- Update the image:
docker pull ghcr.io/secord0/evm-signer:main
- Stop the container:
docker stop evm-signer
- Remove the container:
docker rm evm-signer
- Go to the repository:
cd evm-signer
- Update the local files:
git pull
- Rebuild the image:
docker build -t evm-signer .
- Go to the repository:
cd evm-signer
- Update the local files:
git pull
⠀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
⠀If you found a bug or have an idea, go to the link, select the template, fill it out and submit it.
⠀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