Add --private-key command argument so that users shouldn't have to save the private key in the clear in .env file
This commit is contained in:
parent
e9fcc51dae
commit
910643ab5e
18
README.md
18
README.md
@ -38,17 +38,17 @@ If you want to use Tor connection to conceal ip address, install [Tor Browser](h
|
|||||||
Note that you should reset your tor connection by restarting the browser every time when you deposit & withdraw otherwise you will have the same exit node used for connection.
|
Note that you should reset your tor connection by restarting the browser every time when you deposit & withdraw otherwise you will have the same exit node used for connection.
|
||||||
|
|
||||||
### Goerli, Mainnet, Binance Smart Chain, Gnosis Chain, Polygon Network, Arbitrum, Avalanche
|
### Goerli, Mainnet, Binance Smart Chain, Gnosis Chain, Polygon Network, Arbitrum, Avalanche
|
||||||
1. Add `PRIVATE_KEY` to `.env` file
|
1. `node cli.js --help`
|
||||||
2. `node cli.js --help`
|
2. If you want to use secure, anonymous tor connection add `--tor <torPort>` behind the command.
|
||||||
3. If you want to use secure, anonymous tor connection add `--tor <torPort>` behind the command.
|
3. Add `PRIVATE_KEY` to `.env` file (optional, only if you want to use it for many operations) - open `.env.example` file, add private key after `PRIVATE_KEY=` and rename file to `.env`.
|
||||||
|
|
||||||
#### To deposit:
|
#### To deposit:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ node cli.js deposit <currency> <amount> --rpc <rpc url> --tor <torPort>
|
$ node cli.js deposit <currency> <amount> --rpc <rpc url> --tor <torPort> --private-key <private key>
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that `--tor <torPort>` is optional.
|
Note that `--tor <torPort>` is optional, and use `--private-key <private key>` only if you didn't add it to `.env` file.
|
||||||
|
|
||||||
For RPC nodes please refer to the list of public RPC nodes below.
|
For RPC nodes please refer to the list of public RPC nodes below.
|
||||||
|
|
||||||
@ -67,16 +67,14 @@ Sender account ETH balance is 1004873.361652048361352542
|
|||||||
#### To withdraw:
|
#### To withdraw:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ node cli.js withdraw <note> <recipient> --rpc <rpc url> --relayer <relayer url> --tor <torPort>
|
$ node cli.js withdraw <note> <recipient> --rpc <rpc url> --relayer <relayer url> --tor <torPort> --private-key <private key>
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that `--relayer <relayer url>`, `--tor <torPort>` is optional.
|
Note that `--relayer <relayer url>`, `--tor <torPort>` is optional, and use `--private-key <private key>` only if you withdraw without relayer.
|
||||||
|
|
||||||
If you want to use Tornado Cash relayer for your first withdrawal to your new ethereum account, please refer to the list of relayers below.
|
If you want to use Tornado Cash relayer for your first withdrawal to your new ethereum account, please refer to the list of relayers below.
|
||||||
|
|
||||||
If you don't need relayer while doing withdrawals, you must apply your withdrawal account's private key to `.env` file.
|
If you don't need relayer while doing withdrawals, you must provide your withdrawal account's private key - either as parameter, or by adding it to `.env` file.
|
||||||
|
|
||||||
Copy the `PRIVATE_KEY=` line of `.env.example` to `.env`, and add your private key behind the `=`.
|
|
||||||
|
|
||||||
##### Example:
|
##### Example:
|
||||||
|
|
||||||
|
28
cli.js
28
cli.js
@ -1368,7 +1368,7 @@ async function promptConfirmation() {
|
|||||||
/**
|
/**
|
||||||
* Init web3, contracts, and snark
|
* Init web3, contracts, and snark
|
||||||
*/
|
*/
|
||||||
async function init({ rpc, noteNetId, currency = 'dai', amount = '100', balanceCheck, localMode }) {
|
async function init({ rpc, noteNetId, currency = 'dai', amount = '100', balanceCheck, localMode, privateKey }) {
|
||||||
let contractJson, instanceJson, erc20ContractJson, erc20tornadoJson, tornadoAddress, tokenAddress;
|
let contractJson, instanceJson, erc20ContractJson, erc20tornadoJson, tornadoAddress, tokenAddress;
|
||||||
let ipOptions = {};
|
let ipOptions = {};
|
||||||
|
|
||||||
@ -1428,13 +1428,13 @@ async function init({ rpc, noteNetId, currency = 'dai', amount = '100', balanceC
|
|||||||
MERKLE_TREE_HEIGHT = process.env.MERKLE_TREE_HEIGHT || 20;
|
MERKLE_TREE_HEIGHT = process.env.MERKLE_TREE_HEIGHT || 20;
|
||||||
ETH_AMOUNT = process.env.ETH_AMOUNT;
|
ETH_AMOUNT = process.env.ETH_AMOUNT;
|
||||||
TOKEN_AMOUNT = process.env.TOKEN_AMOUNT;
|
TOKEN_AMOUNT = process.env.TOKEN_AMOUNT;
|
||||||
const privKey = process.env.PRIVATE_KEY;
|
const privKey = privateKey || process.env.PRIVATE_KEY;
|
||||||
|
|
||||||
if (privKey) {
|
if (privKey) {
|
||||||
if (privKey.includes('0x')) {
|
if (privKey.startsWith('0x')) {
|
||||||
PRIVATE_KEY = process.env.PRIVATE_KEY.substring(2);
|
PRIVATE_KEY = privKey.substring(2);
|
||||||
} else {
|
} else {
|
||||||
PRIVATE_KEY = process.env.PRIVATE_KEY;
|
PRIVATE_KEY = privKey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (PRIVATE_KEY) {
|
if (PRIVATE_KEY) {
|
||||||
@ -1502,6 +1502,7 @@ async function main() {
|
|||||||
.option('-r, --rpc <URL>', 'The RPC that CLI should interact with', 'http://localhost:8545')
|
.option('-r, --rpc <URL>', 'The RPC that CLI should interact with', 'http://localhost:8545')
|
||||||
.option('-R, --relayer <URL>', 'Withdraw via relayer')
|
.option('-R, --relayer <URL>', 'Withdraw via relayer')
|
||||||
.option('-T, --tor <PORT>', 'Optional tor port')
|
.option('-T, --tor <PORT>', 'Optional tor port')
|
||||||
|
.option('-p, --private-key <KEY>', "Wallet private key - If you didn't add it to .env file and it is needed for operation")
|
||||||
.option('-S --gas_speed <SPEED>', 'Gas speed preference [ instant, fast, standard, low ]')
|
.option('-S --gas_speed <SPEED>', 'Gas speed preference [ instant, fast, standard, low ]')
|
||||||
.option('-N --noconfirmation', 'No confirmation mode - Does not query confirmation ')
|
.option('-N --noconfirmation', 'No confirmation mode - Does not query confirmation ')
|
||||||
.option('-L, --local-rpc', 'Local node mode - Does not submit signed transaction to the node')
|
.option('-L, --local-rpc', 'Local node mode - Does not submit signed transaction to the node')
|
||||||
@ -1522,7 +1523,7 @@ async function main() {
|
|||||||
statePreferences(program);
|
statePreferences(program);
|
||||||
|
|
||||||
const { currency, amount, netId, commitmentNote } = parseInvoice(invoice);
|
const { currency, amount, netId, commitmentNote } = parseInvoice(invoice);
|
||||||
await init({ rpc: program.rpc, currency, amount, localMode: program.local });
|
await init({ rpc: program.rpc, currency, amount, localMode: program.local, privateKey: program.privateKey });
|
||||||
console.log('Creating', currency.toUpperCase(), amount, 'deposit for', netName, 'Tornado Cash Instance');
|
console.log('Creating', currency.toUpperCase(), amount, 'deposit for', netName, 'Tornado Cash Instance');
|
||||||
await deposit({ currency, amount, commitmentNote });
|
await deposit({ currency, amount, commitmentNote });
|
||||||
});
|
});
|
||||||
@ -1536,7 +1537,7 @@ async function main() {
|
|||||||
|
|
||||||
statePreferences(program);
|
statePreferences(program);
|
||||||
|
|
||||||
await init({ rpc: program.rpc, currency, amount, localMode: program.local });
|
await init({ rpc: program.rpc, currency, amount, localMode: program.local, privateKey: program.privateKey });
|
||||||
await deposit({ currency, amount });
|
await deposit({ currency, amount });
|
||||||
});
|
});
|
||||||
program
|
program
|
||||||
@ -1549,7 +1550,14 @@ async function main() {
|
|||||||
|
|
||||||
const { currency, amount, netId, deposit } = parseNote(noteString);
|
const { currency, amount, netId, deposit } = parseNote(noteString);
|
||||||
|
|
||||||
await init({ rpc: program.rpc, noteNetId: netId, currency, amount, localMode: program.local });
|
await init({
|
||||||
|
rpc: program.rpc,
|
||||||
|
noteNetId: netId,
|
||||||
|
currency,
|
||||||
|
amount,
|
||||||
|
localMode: program.local,
|
||||||
|
privateKey: program.privateKey
|
||||||
|
});
|
||||||
await withdraw({
|
await withdraw({
|
||||||
deposit,
|
deposit,
|
||||||
currency,
|
currency,
|
||||||
@ -1581,7 +1589,7 @@ async function main() {
|
|||||||
.action(async (address, amount, tokenAddress) => {
|
.action(async (address, amount, tokenAddress) => {
|
||||||
statePreferences(program);
|
statePreferences(program);
|
||||||
|
|
||||||
await init({ rpc: program.rpc, balanceCheck: true, localMode: program.local });
|
await init({ rpc: program.rpc, balanceCheck: true, localMode: program.local, privateKey: program.privateKey });
|
||||||
await send({ address, amount, tokenAddress });
|
await send({ address, amount, tokenAddress });
|
||||||
});
|
});
|
||||||
program
|
program
|
||||||
@ -1693,7 +1701,7 @@ async function main() {
|
|||||||
console.log('Start performing ETH deposit-withdraw test');
|
console.log('Start performing ETH deposit-withdraw test');
|
||||||
let currency = 'eth';
|
let currency = 'eth';
|
||||||
let amount = '0.1';
|
let amount = '0.1';
|
||||||
await init({ rpc: program.rpc, currency, amount });
|
await init({ rpc: program.rpc, currency, amount, privateKey: program.privateKey });
|
||||||
let noteString = await deposit({ currency, amount });
|
let noteString = await deposit({ currency, amount });
|
||||||
let parsedNote = parseNote(noteString);
|
let parsedNote = parseNote(noteString);
|
||||||
await withdraw({
|
await withdraw({
|
||||||
|
Loading…
Reference in New Issue
Block a user