Recommend command-line tool for offline signing ethereum transactions?
I'm looking for a command-line tool that will allow me to use a separate, offline computer for signing and verifying transactions, and then use my normal, online computer for submitting the raw transactions to the rest of the world. I want to manage my own keys and keep the dependencies used as simple as possible.
Really only need it to do 4 operations:
-
make_transaction
: This would take three inputs - thefrom_address_in_hex
, theto_address_in_hex
, and theamount
- and output anunsigned_transaction_in_hex
. -
submit_transaction
: This would take an input of asigned_transaction_in_hex
and output details on which block it was included in. -
print_transaction
: This would take either anunsigned_transaction_in_hex
or asigned_transaction_in_hex
as input and output a human-readable ASCII version of all transaction fields. -
sign_transaction
: This wold take aunsigned_transaction_hex
and aprivate_key_hex
as inputs and output ahex_signed_transaction
.
Operations 3 and 4 need to be able to run disconnected from the internet. Operation 1 and 2 need the internet, the former so it can look up the correct nounce and choose parameters related to gas prices for the transaction.
I'm looking for a solution that will keep my funds safe, even if the code I'm running is malicious, as long as I verify the transaction being signed is the intended one and keep my offline computer disconnected. In the past, it seems like web3.js from a node console would have been the solution, but now that the web3.js API has been promisified, that seems more error prone. I bought a ledger hardware wallet, but am concerned about the risk of the manufacturer being hacked and shipping out malicious firmware and libraries, so have decided to go the offline PC route.