Skip to content

New signatures fixes (for review only) #30

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 67 commits into
base: signatures_without_new_fixes
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
7cdf333
bridge checker fix
shlumper Feb 7, 2022
b04e5c5
fix wss://testnet.sovryn.app/ws URI
tjcloa May 13, 2022
a48158d
update bsc testnet rpc
bravepooh May 16, 2022
530d365
Merge branch 'master' of https://github.com/DistributedCollective/Bri…
shlumper May 29, 2022
e82b913
remove shlumoer from email list
shlumper Jun 19, 2022
661de16
Add more logging
koirikivi Jun 28, 2022
888280f
Add even more logging
koirikivi Jun 28, 2022
c9ae55b
Update docker tag
koirikivi Jun 28, 2022
3c40c88
Check processed status before checking signatures
koirikivi Jun 28, 2022
af7be38
Remove unused transactionSender variable
koirikivi Jun 28, 2022
83d69f4
Fix error in docker image building docs
koirikivi Jun 28, 2022
73832e7
Update last processed block numbers
koirikivi Jun 28, 2022
899ade4
Add more logs when signTransaction fails
koirikivi Jun 28, 2022
ed9cbbf
Yet another new tag for debugging
koirikivi Jun 28, 2022
085938a
Fix typo in previous typo-fix commit
koirikivi Jun 28, 2022
11522e2
Fix signTransaction error when more than one Cross event in a block
koirikivi Jun 28, 2022
62cf058
Update last processed block numbers
koirikivi Jun 28, 2022
2d1bd58
10.12 tag
koirikivi Jun 28, 2022
72a8c87
Bump signature TTL to 24h
koirikivi Jul 5, 2022
bfe26e6
Fix listener leak on timeout
koirikivi Jul 6, 2022
18733c4
Remove unneeded debug logging
koirikivi Jul 6, 2022
1fa433b
Add test for mismatching deadline
koirikivi Jul 6, 2022
1197c77
Minor signatures test code refactoring
koirikivi Jul 6, 2022
575ac33
Add configurable signature request timeout
koirikivi Jul 6, 2022
2387f2b
Change ropsten signature request timeout to 2 min
koirikivi Jul 6, 2022
b72408a
Don't mutate global state in tests -- fix running a single federator …
koirikivi Jul 6, 2022
e33a008
Don't allow different signatures from the same signer
koirikivi Jul 6, 2022
d0b9478
Validate deadlines when requesting signatures
koirikivi Jul 13, 2022
e479936
Require a buffer for signature deadlines
koirikivi Jul 13, 2022
5098a20
10.13 tag
koirikivi Jul 13, 2022
6b89627
Update BSC/RSK start blocks
koirikivi Jul 13, 2022
b9d236d
9.10 tag
koirikivi Jul 13, 2022
bdff0d0
Fix unsupported syntax
koirikivi Jul 13, 2022
ded7029
Increase sleep time in start.sh
koirikivi Jul 13, 2022
40214be
60s
koirikivi Jul 13, 2022
f4248ca
9.11
koirikivi Jul 13, 2022
e3988f6
BSC hotfix tag
koirikivi Jul 13, 2022
cbe9beb
Working BSC testnet RPC url
koirikivi Aug 1, 2022
d584998
Update block numbers and BSC RPC Url
koirikivi Aug 22, 2022
92f1737
9.12
koirikivi Aug 22, 2022
7d3c7b1
Rename Globals to globals so that imports work on Linux too
koirikivi Aug 22, 2022
5e55d8f
9.13
koirikivi Aug 22, 2022
4df9b4b
Merge branch 'master' into signatures-merge-check
koirikivi Sep 7, 2022
c7ca738
Update federation addresses, block numbers and rpc urls
koirikivi Sep 7, 2022
5028403
Merge branch 'master' (early part) into signatures-merge-check
koirikivi Sep 7, 2022
eb80752
Change the exposed port to 4444
koirikivi Sep 7, 2022
7664385
Mainnet peers config
koirikivi Sep 7, 2022
02c487e
Fault tolerance
koirikivi Sep 7, 2022
8f95389
Only wait for 5 min when polling avg gas interval
koirikivi Sep 7, 2022
288f70d
10.14 tag (federator update ready)
koirikivi Sep 7, 2022
561a720
Remove --name, 10.15
koirikivi Sep 7, 2022
32b7648
Temporarily edit the reset script to reset to signatures branch
koirikivi Sep 7, 2022
b50b6b8
Signatures-friendly config
koirikivi Sep 7, 2022
45eeab5
Log number of peers on each iteration
koirikivi Sep 7, 2022
3700757
10.16
koirikivi Sep 7, 2022
1a48202
Reset script shenanigans
koirikivi Sep 7, 2022
3d30745
Return peerAmount correctly
koirikivi Sep 7, 2022
0045447
10.17
koirikivi Sep 7, 2022
5abb35e
Correct "other peer" amount
koirikivi Sep 7, 2022
68e0860
Handle other peer amount correctly, more logging
koirikivi Sep 7, 2022
2cf8d97
10.18
koirikivi Sep 7, 2022
8aaaaf8
Fix reset script
koirikivi Sep 7, 2022
5dd12c2
Test
koirikivi Sep 7, 2022
07cda0e
FIX IT
koirikivi Sep 7, 2022
3040cef
Update config
koirikivi Sep 7, 2022
2852a54
Reset script update
koirikivi Sep 7, 2022
89083fe
10.19
koirikivi Sep 7, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docker-compose-prod.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
version: "3"
services:
federation:
image: sovryn/fed-tokenbridge:10.9
image: sovryn/fed-tokenbridge:10.19
ports:
- 30303:30303
- 4444:30303
volumes:
- ./federator-env/${FED_ENV}/:/app/federator/config
- ./federator-env/${FED_ENV}/db:/app/federator/db
Expand Down
2 changes: 1 addition & 1 deletion docker-compose-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: "3"
services:
federation:
image: sovryn/fed-tokenbridge:10.9
ports:
ports:
- 30303:30303
volumes:
- ./federator-env/${FED_ENV}/:/app/federator/config
Expand Down
6 changes: 3 additions & 3 deletions federator-env/mainnet-BSC-RSK/bmainnet.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"bridge": "0xdfc7127593c8af1a17146893f10e08528f4c2aa7",
"federation": "0x6d212BB9059a1761592ed199Be9955f0dFBf141E",
"federation": "0x502fBCe27973d4bE1E69a4099046762251D005B4",
"multiSig": "0xec3fabc3517e64e07669dd1d2d673f466f93a328",
"allowTokens": "0xc4b5178Cc086E764568AdfB2dacCBB0d973e8132",
"erc777Converter": "0x9D46B33171eA7124aEE472bFe61B5B7084B55069",
"host": "https://bsc-dataseed1.defibit.io/",
"fromBlock": 7912333
"host": "https://bsc.sovryn.app/mainnet",
"fromBlock": 21118895
}
4 changes: 4 additions & 0 deletions federator-env/mainnet-BSC-RSK/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ module.exports = {
confirmations: 120, // Number of blocks before processing it, if working with ganache set as 0
privateKey: fs.readFileSync(`${__dirname}/federator.key`, 'utf8').trim(),
storagePath: './db',
minimumPeerAmount: 2,
port: 30303,
signaturesTTL: 24 * 60 * 60, // In seconds
signatureRequestTimeoutMs: 2 * 60 * 1000, // In milliseconds
federatorInstanceId: 'federatorInstanceId_replace_this',
federatorAddress: 'federatorAddress_replace_this',
telegramBot: {
Expand Down
24 changes: 24 additions & 0 deletions federator-env/mainnet-BSC-RSK/peers.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
module.exports = {
"peers": [
{
"address": "0xf963C7B3D8f6dAB6d1176702B94Ecdb75916770A",
"ip": "3.132.89.149",
"port": 4444
},
{
"address": "0x4b03E69D6962649573f2747c04F2dd9aB5494Cdb",
"ip": "3.140.153.73",
"port": 4444
},
{
"address": "0x642aA4Ab1F29c0E8877A99312494E2A0b623a682",
"ip": "18.189.59.47",
"port": 4444
},
{
"address": "0x57a247b871784E6e303CC29230Fa664fab15370D",
"ip": "18.116.158.70",
"port": 4444
}
]
};
6 changes: 3 additions & 3 deletions federator-env/mainnet-BSC-RSK/rskmainnet.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"bridge": "0x971b97c8cc82e7d27bc467c2dc3f219c6ee2e350",
"federation": "0xAb8F212eA333626a96999A865072095aDE95Eb5a",
"federation": "0xD1E45f51C8f09b139218fc75d26409096316971C",
"multiSig": "0xee9ea57555d9533d71f6f77e0e480961f068a6c5",
"allowTokens": "0x200FD7a1cCEa4651F15008cC99bF82d7461EFd3F",
"erc777Converter": "0xc8149b1F15794D135Dfe2924955cb90709Ac7070",
"host": "http://18.221.155.102:4444/",
"fromBlock": 3398643
"host": "https://mainnet.sovryn.app/rpc",
"fromBlock": 4614985
}
4 changes: 4 additions & 0 deletions federator-env/mainnet-ETH-RSK/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ module.exports = {
confirmations: 120, // Number of blocks before processing it, if working with ganache set as 0
privateKey: fs.readFileSync(`${__dirname}/federator.key`, 'utf8').trim(),
storagePath: './db',
minimumPeerAmount: 2,
port: 30303,
signaturesTTL: 24 * 60 * 60, // In seconds
signatureRequestTimeoutMs: 2 * 60 * 1000, // In milliseconds
federatorInstanceId: 'federatorInstanceId_replace_this',
federatorAddress: 'federatorAddress_replace_this',
etherscanApiKey: etherscanApiKey,
Expand Down
4 changes: 2 additions & 2 deletions federator-env/mainnet-ETH-RSK/mainnet.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"bridge": "0x33c0d33a0d4312562ad622f91d12b0ac47366ee1",
"federation": "0xa38E6a92495A58A05969846a21d5cbb41Dc4dF24",
"federation": "0xD77b76A65a19715BDcB5eE223928af2919836A3E",
"multiSig": "0x062c74f9d27b1178bb76186c1756128ccb3ccd2e",
"allowTokens": "0xf9A59a649859A27d664C8bDb51fA53bCb268545C",
"erc777Converter": "0xC0b2A9E31f69e4F0bC24584C678C582714a4fA1b",
"host": "https://mainnet.infura.io/v3/f02caaf003d14ad7bee83f33eeda2f5a",
"fromBlock": 12110034
"fromBlock": 15483239
}
25 changes: 25 additions & 0 deletions federator-env/mainnet-ETH-RSK/peers.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
module.exports = {
"peers": [
{
"address": "0xa420512B06B23d14Beb25Bae524a9B5F8789c45C",
"ip": "18.119.155.67",
"port": 4444
},
{
"address": "0xcD1b561207E20A7ccbcf004bb0a4bc897BA8F2eE",
"ip": "3.129.188.13",
"port": 4444
},
{
"address": "0x778898877A3277F7306b19879F426A86d078E115",
"ip": "3.132.239.65",
"port": 4444
},
{
"address": "0x8a2241ce21AfA71515a73f82D09E690b85603F35",
"ip": "3.134.242.47",
"port": 4444
}
]
}
;
6 changes: 3 additions & 3 deletions federator-env/mainnet-ETH-RSK/rskmainnet.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"bridge": "0x1ccad820b6d031b41c54f1f3da11c0d48b399581",
"federation": "0xCEB11D7e862eF324C2C6c0feBc8797D8be83084e",
"federation": "0x32593e4f7A4991C2fe17459DaE9920fd612855B4",
"multiSig": "0xb64322e10b5ae1be121b8bb0dead560c53d9dbc3",
"allowTokens": "0x7DC1D73C620cF8eB167eDD32942DA0d01B70adC0",
"erc777Converter": "0xb86623c103843ccf75c6f0073d84bcfc0e34536c",
"host": "http://18.221.155.102:4444/",
"fromBlock": 3258718
"host": "https://mainnet.sovryn.app/rpc",
"fromBlock": 4615325
}
2 changes: 1 addition & 1 deletion federator-env/testnet-BSC-RSK/btestnet.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@
"multiSig": "0x1d8cb60d35fcd42a8bd18d027386be9c0f9c509b",
"allowTokens": "0xeb23e848ceca88b7d0c019c7186bb86cefadd0bd",
"erc777Converter": "0x573CAF2cA648e22fE9721EDB5DdfBdF5645ffd18",
"host": "https://data-seed-prebsc-1-s1.binance.org:8545/",
"host": "https://bsc.sovryn.app/testnet",
"fromBlock": 16600000
}
3 changes: 2 additions & 1 deletion federator-env/testnet-ETH-RSK/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ module.exports = {
runEvery: 2, // In minutes,
confirmations: 120, // Number of blocks before processing it, if working with ganache set as 0
privateKey: fs.readFileSync(`${__dirname}/federator.key`, 'utf8').trim(),
signaturesTTL: 120,
signaturesTTL: 24 * 60 * 60, // In seconds
signatureRequestTimeoutMs: 2 * 60 * 1000, // In milliseconds
storagePath: './db',
federatorInstanceId: 'federatorInstanceId_replace_this',
federatorAddress: 'federatorAddress_replace_this',
Expand Down
2 changes: 1 addition & 1 deletion federator-env/testnet-ETH-RSK/ropsten.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
"allowTokens": "0x9bc4243880730a9bca69addb0f971700d39d1646",
"erc777Converter": "0x8F3bbD7673485Cf4c43EF008e125575028fD43F1",
"host": "https://ropsten.infura.io/v3/728946296ea64626941bb3d120d16333",
"fromBlock": 10222073
"fromBlock": 12190673
}
2 changes: 1 addition & 1 deletion federator-env/testnet-ETH-RSK/rsktestnet.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
"allowTokens": "0x918b9fd8c2e9cf5625ea00ca6cfa270a44050d01",
"erc777Converter": "0x621d9Ce70Db000273Ddb3d50fa85732960a9E934",
"host": "https://testnet2.sovryn.app/rpc",
"fromBlock": 1980020
"fromBlock": 2962423
}
2 changes: 1 addition & 1 deletion federator-wallets-checker/Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def sendEmail(needFundsWalletsOuput, subject){
</html>

"""
emailext (from: "notifications@sovryn.app", to:"ororosovryn@protonmail.com, shlumperx@gmail.com, brave.pooh8@gmail.com, elan@remake.money", mimeType: 'text/html', subject: subject, body: emailBody)
emailext (to:"ororosovryn@protonmail.com, brave.pooh8@gmail.com, elan@remake.money", mimeType: 'text/html', subject: subject, body: emailBody)

}

Expand Down
2 changes: 1 addition & 1 deletion how_to_build_fed_docker_image.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ with github actions

* create tag: ```git tag 8.5```

* push tags: ```git push tag 8.5```
* push tag: ```git push origin 8.5```



Expand Down
5 changes: 3 additions & 2 deletions reset.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ find federator-env/testnet-BSC-RSK/db/. -type f -not -name 'failingTxIds.txt' -d
find federator-env/testnet-ETH-RSK/db/. -type f -not -name 'failingTxIds.txt' -delete
find federator-env/rinkeby-ETH-RSK/db/. -type f -not -name 'failingTxIds.txt' -delete
rm -rf federator.log
git reset --hard origin/master
git pull
git reset --hard HEAD
git fetch
git checkout origin/signatures # test
2 changes: 1 addition & 1 deletion sovryn-token-bridge/federator/config/config.sample.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ module.exports = {
runEvery: 2, // In minutes,
confirmations: 120, // Number of blocks before processing it, if working with ganache set as 0
privateKey: fs.readFileSync(`${__dirname}/federator.key`, 'utf8').trim(),
signaturesTTL: 120, // 2 minutes
signaturesTTL: 24 * 60 * 60, // In seconds
storagePath: './db',
federatorInstanceId: '',
etherscanApiKey: etherscanApiKey,
Expand Down
96 changes: 71 additions & 25 deletions sovryn-token-bridge/federator/src/lib/Federator.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,12 +145,6 @@ module.exports = class Federator {
// Loop around logs to process each of them
async _processLogs(ctr, logs) {
try {
const transactionSender = new TransactionSender(
this.sideWeb3,
this.logger,
this.config,
''
);
const currentBlock = await this._getCurrentBlockNumber();

let newLastBlockNumber;
Expand All @@ -161,9 +155,16 @@ module.exports = class Federator {
const { _amount: amount, _symbol: symbol } = log.returnValues;

if (this._isConfirmed(ctr, symbol, amount, currentBlock, log.blockNumber)) {
const signatures = await this._requestSignatureFromFederators(log);
this.logger.info('Collected enough signatures');
await this._processLog(log, signatures);
const alreadyProcessed = await this._isAlreadyProcessed(log);
if (alreadyProcessed) {
this.logger.debug(
`Block: ${log.blockHash} Tx: ${log.transactionHash} token: ${symbol} is already processed (on Bridge) -- no need to get signatures`
);
} else {
const signatures = await this._requestSignatureFromFederators(log);
this.logger.info('Collected enough signatures');
await this._processLog(log, signatures);
}
} else if (allLogsConfirmed) {
newLastBlockNumber = log.blockNumber - 1;
allLogsConfirmed = false;
Expand All @@ -181,8 +182,16 @@ module.exports = class Federator {
this.logger.info('Requesting other federators to sign event');

const timer = setTimeout(
() => reject("Didn't get enough signatures after 10 minutes timeout"),
60000
() => {
this.logger.warn("Timeout: Didn't get enough signatures after waiting");
try {
listener.unsubscribe();
} catch(e) {
this.logger.error(`Error subscribing from listener on timeout: ${e}`);
}
reject("Didn't get enough signatures before timeout")
},
this.config.signatureRequestTimeoutMs || 60000
);

// Select correct message type depending on main on side federator
Expand All @@ -198,6 +207,7 @@ module.exports = class Federator {
};

const signatures = new Set();
const signers = new Set();
const listener = this.network.net.onMessage(async (msg) => {
if (msg.type === submissionType && msg.data.logId === log.id) {
this.logger.info(`Submission received from ${msg.source.id}`);
Expand All @@ -212,6 +222,28 @@ module.exports = class Federator {
return;
}

if (signers.has(signerAddress)) {
this.logger.warn(
`Signer ${signerAddress} has already submitted a signature`
);
return;
}
signers.add(signerAddress);

// Require 2 minutes or signaturesTTL/2 of buffer, whichever is smaller, to avoid sending the
// transactions with signatures that might expire before the transaction gets mined in the blockchain.
// 2 minutes might not be enough, but we need to start with something
const deadlineBufferSeconds = Math.min(
this.config.signaturesTTL / 2,
120
);
if (!utils.validateDeadline(signatureData.deadline, deadlineBufferSeconds)) {
this.logger.warn(
`Deadline ${signatureData.deadline} has either passed or is too close`
);
return;
}

signatures.add(signatureData);
if (signatures.size >= this.config.minimumPeerAmount) {
clearTimeout(timer);
Expand Down Expand Up @@ -256,6 +288,21 @@ module.exports = class Federator {
return ethers.utils.recoverAddress(digest, signature);
}

async _isAlreadyProcessed(log) {
const {
_to: receiver,
_amount: amount,
} = log.returnValues;
let bridgeTransactionId = await this.sideBridgeContract.methods.getTransactionId(
log.blockHash,
log.transactionHash,
receiver,
amount,
log.logIndex,
).call();
return await this.sideBridgeContract.methods.processed(bridgeTransactionId).call();
}

async _processLog(log, signatures) {
const {
_to: receiver,
Expand All @@ -268,17 +315,11 @@ module.exports = class Federator {
} = log.returnValues;

// We check the status from the bridge first before bothering checking the Federation contract.
// Actually, a check from the bridge is all that we need (in principle)
let bridgeTransactionId = await this.sideBridgeContract.methods.getTransactionId(
log.blockHash,
log.transactionHash,
receiver,
amount,
log.logIndex,
).call();
this.logger.info('Bridge transaction id:', bridgeTransactionId);
let wasProcessed = await this.sideBridgeContract.methods.processed(bridgeTransactionId).call();
this.logger.info('was processed (bridge):', wasProcessed);
// Actually, a check from the bridge is all that we need (in principle) -- but let's leave the other checks
// there too.
// Note that we don't really need to double-check here either, since we check this before requesting
// signatures from federators, but let's do it anyway for safety.
let wasProcessed = await this._isAlreadyProcessed(log);
if (wasProcessed) {
this.logger.debug(
`Block: ${log.blockHash} Tx: ${log.transactionHash} token: ${symbol} was already processed (on Bridge)`
Expand Down Expand Up @@ -543,13 +584,18 @@ module.exports = class Federator {
}

async signTransaction({ blockNumber, id }) {
const logs = await this.mainBridgeContract.getPastEvents('Cross', {
const allLogs = await this.mainBridgeContract.getPastEvents('Cross', {
fromBlock: blockNumber,
toBlock: blockNumber,
filter: { id },
});
// Passing filter: { id } to getPastEvents won't do any filtering, we need to filter like this
const logs = allLogs.filter(log => log.id === id);

if (logs.length !== 1) throw new CustomError('Invalid return when searching for event');
if (logs.length !== 1) {
this.logger.error(`Got ${logs.length} logs when expecting 1. Block number: ${blockNumber}, Log id: ${id}, Logs:`);
this.logger.error(logs);
throw new CustomError('Invalid return when searching for event');
}

const { _tokenAddress, _amount, _to, _symbol, _decimals, _granularity, _userData } =
logs[0].returnValues;
Expand Down
7 changes: 5 additions & 2 deletions sovryn-token-bridge/federator/src/lib/GasServices.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,11 @@ module.exports = class GasServices {
this.logger.info(
`Process is waiting to calculate average gas of ${avgGasPeriodInterval} ms.`
);
this.logger.debug('Process is waiting to calculate average gas of ', avgGasPeriodInterval);
await utils.sleep(avgGasPeriodInterval, { logger: this.logger });
// Temporarily only sleep for 5 min while waiting for gas prices
// this.logger.debug('Process is waiting to calculate average gas of ', avgGasPeriodInterval);
// await utils.sleep(avgGasPeriodInterval, { logger: this.logger });
this.logger.debug('Process is waiting to calculate average gas for 5min');
await utils.sleep(5 * 60 * 1000, { logger: this.logger });
}

async runGasPriceService() {
Expand Down
2 changes: 1 addition & 1 deletion sovryn-token-bridge/federator/src/lib/TransactionSender.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ module.exports = class TransactionSender {

async createETHRawTransaction(from, to, data, value, chainId) {
const nonce = await this.getNonce(from);
const gwei = 1_000_000_000;
const gwei = 1000000000;
const priorityFee = 2;
const sleepOnGas = this.config.sleepOnGas * 1000; //10 * 1000 ; // 10 Seconds
const maxSleepOnGas = this.config.maxSleepOnGas; //12
Expand Down
Loading