Use new ethers.js NonceManager to handle transaction nonces

So far we have failed to globally handle the transaction nonces.
The new ethers.js v5 comes with a NonceManager that helps us handling
transaction nonces and automatically increases the nonce for each
transaction.
This commit is contained in:
bumi 2020-06-27 18:24:44 +02:00
parent 35f6acc150
commit b7ff55929c
4 changed files with 522 additions and 37 deletions

View File

@ -2,6 +2,7 @@ const fs = require('fs');
const util = require('util');
const fetch = require('node-fetch');
const ethers = require('ethers');
const NonceManager = require('@ethersproject/experimental').NonceManager;
const Kredits = require('kredits-contracts');
const walletPath = process.env.KREDITS_WALLET_PATH || './wallet.json';
@ -43,7 +44,7 @@ module.exports = async function(robot) {
} else {
ethProvider = new ethers.getDefaultProvider('rinkeby');
}
const signer = wallet.connect(ethProvider);
const signer = new NonceManager(wallet.connect(ethProvider));
//
// Kredits contracts setup

View File

@ -1,5 +1,9 @@
const fetch = require('node-fetch');
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
module.exports = async function(robot, kredits) {
function messageRoom(message) {
@ -13,9 +17,6 @@ module.exports = async function(robot, kredits) {
const zoomAccessToken = process.env.KREDITS_ZOOM_JWT;
const walletTransactionCount = await kredits.provider.getTransactionCount(kredits.signer.address);
let nonce = walletTransactionCount;
async function createContributionFor (displayName, meeting) {
const contributor = await getContributorByZoomDisplayName(displayName);
@ -35,7 +36,7 @@ module.exports = async function(robot, kredits) {
time: meeting.end_time.split('T')[1]
}
return Contribution.add(contribution, { nonce: nonce++ })
return Contribution.add(contribution)
.then(tx => {
robot.logger.info(`[hubot-kredits] Contribution created: ${tx.hash}`);
})
@ -78,6 +79,7 @@ module.exports = async function(robot, kredits) {
for (const displayName of names) {
await createContributionFor(displayName, meetingDetails);
await sleep(60000); // potentially to prevent too many transactions at the sametime. transactions need to be ordered because of the nonce. not sure though if this is needed.
};
}

543
package-lock.json generated
View File

@ -4,6 +4,423 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@ensdomains/address-encoder": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.7.tgz",
"integrity": "sha512-p43NCgeyF3Q5ZEhEa24SN/UYUTKZIvFHwQ3xT8xqv4/iBbf7+efOP8Pl6kHbu6HI6pdWhTMvHOUR4UEDu4MN1g==",
"requires": {
"bech32": "^1.1.3",
"crypto-addr-codec": "^0.1.7"
}
},
"@ethersproject/abi": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.1.tgz",
"integrity": "sha512-9fqSa3jEYV4nN8tijW+jz4UnT/Ma9/b8y4+nHlsvuWqr32E2kYsT9SCIVpk/51iM6NOud7xsA6UxCox9zBeHKg==",
"requires": {
"@ethersproject/address": "^5.0.0",
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/constants": "^5.0.0",
"@ethersproject/hash": "^5.0.0",
"@ethersproject/keccak256": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"@ethersproject/strings": "^5.0.0"
}
},
"@ethersproject/abstract-provider": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.1.tgz",
"integrity": "sha512-/KOw65ayviYPtKLqFE1qozeIJJlfI1wE/tNA+iKUPUai6bU6vg2tbfLFGarRTCQe3HoWV1t7xSsD/z9T9xg74g==",
"requires": {
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/networks": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"@ethersproject/transactions": "^5.0.0",
"@ethersproject/web": "^5.0.0"
}
},
"@ethersproject/abstract-signer": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.1.tgz",
"integrity": "sha512-Rp8DP+cLcSNFkd1YhwPSBcgEWLRipNakitwIwHngAmhbo4zdiWgALD/OLqdQ7SKF75CufF1W4BCuXcQgiWaRow==",
"requires": {
"@ethersproject/abstract-provider": "^5.0.0",
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/properties": "^5.0.0"
}
},
"@ethersproject/address": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.1.tgz",
"integrity": "sha512-kfQtXpBP2pI2TfoRRAYv8grHGiYw8U0c1KbMsC58/W33TIBy7gFSf/oAzOd94lNzdIUenKU0OuSzrHQfVcDDDA==",
"requires": {
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/keccak256": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/rlp": "^5.0.0",
"bn.js": "^4.4.0"
}
},
"@ethersproject/base64": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.1.tgz",
"integrity": "sha512-WZDa+TYl6BQfUm9EQIDDfJFL0GiuYXNZPIWoiZx3uds7P1XMsvcW3k71AyjYUxIkU5AKW7awwPbzCbBeP1uXsA==",
"requires": {
"@ethersproject/bytes": "^5.0.0"
}
},
"@ethersproject/basex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.0.1.tgz",
"integrity": "sha512-ssL2+p/A5bZgkZkiWy0iQDVz2mVJxZfzpf7dpw8t0sKF9VpoM3ZiMthRapH/QBhd4Rr6TNbr619pFLAGmMi9Ug==",
"requires": {
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/properties": "^5.0.0"
}
},
"@ethersproject/bignumber": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.1.tgz",
"integrity": "sha512-srGDO7ksT0avdDw5pBtj6F81psv5xiJMInwSSatfIKplitubFb6yVwoHGObGRd0Pp3TvrkIDfJkuskoSMj4OHQ==",
"requires": {
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"bn.js": "^4.4.0"
}
},
"@ethersproject/bytes": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.1.tgz",
"integrity": "sha512-Y198536UW9Jb9RBXuqmCsCa9mYJUsxJn+5aGr2XjNMpLBc6vEn/44GHnbQXYgRCzh4rnWtJ9bTgSwDjme9Hgnw==",
"requires": {
"@ethersproject/logger": "^5.0.0"
}
},
"@ethersproject/constants": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.1.tgz",
"integrity": "sha512-Xec07hFCPN4wfC3WDiRay7KipkApl2msiKTrBHCuAwNMOM8M92+mlQp8tgfEL51DPwCZkmdk1f02kArc6caVSw==",
"requires": {
"@ethersproject/bignumber": "^5.0.0"
}
},
"@ethersproject/contracts": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.0.1.tgz",
"integrity": "sha512-1uPajmkvw3Oy/dxs5TKUsGaXzQ3s5qiXKSVpw9ZrhGG6fMRO3gNyUA+uSWk9IXK0ulj5P95F7vW8HmYOkzep/Q==",
"requires": {
"@ethersproject/abi": "^5.0.0",
"@ethersproject/abstract-provider": "^5.0.0",
"@ethersproject/abstract-signer": "^5.0.0",
"@ethersproject/address": "^5.0.0",
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/constants": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/properties": "^5.0.0"
}
},
"@ethersproject/experimental": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/@ethersproject/experimental/-/experimental-5.0.0.tgz",
"integrity": "sha512-AEjVi6uvV4LcHbIozUyM7i6UNj1pqqWV4PhJiVfpeYLVc7FpiIlOOQUGJUHyXLuwjqyBO6vrQrtP3u2x2mKPFQ==",
"requires": {
"@ensdomains/address-encoder": "^0.1.2",
"@ethersproject/web": "^5.0.0",
"ethers": "^5.0.0",
"scrypt-js": "3.0.1"
},
"dependencies": {
"scrypt-js": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz",
"integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA=="
}
}
},
"@ethersproject/hash": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.1.tgz",
"integrity": "sha512-1ByUXYvkszrSSks07xctBtZfpFnIVmftxWlAAnguxh6Q65vKECd/EPi5uI5xVOvnrYMH9Vb8MK1SofPX/6fArQ==",
"requires": {
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/keccak256": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/strings": "^5.0.0"
}
},
"@ethersproject/hdnode": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.0.1.tgz",
"integrity": "sha512-L2OZP4SKKxNtHUdwfK8cND09kHRH62ncxXW33WAJU9shKo8Sbz31HVqSdov84bMAGm8QfEKZbfbAJV/7DM6DjQ==",
"requires": {
"@ethersproject/abstract-signer": "^5.0.0",
"@ethersproject/basex": "^5.0.0",
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/pbkdf2": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"@ethersproject/sha2": "^5.0.0",
"@ethersproject/signing-key": "^5.0.0",
"@ethersproject/strings": "^5.0.0",
"@ethersproject/transactions": "^5.0.0",
"@ethersproject/wordlists": "^5.0.0"
}
},
"@ethersproject/json-wallets": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.0.1.tgz",
"integrity": "sha512-QjqQCh1a0a6wRVHdnqVccCLWX0vAgxnvGZeGqpOk2NbyNE8HTzV7GpOE+4LU+iCc8oonfy1gYd4hpsf+iEUWGg==",
"requires": {
"@ethersproject/abstract-signer": "^5.0.0",
"@ethersproject/address": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/hdnode": "^5.0.0",
"@ethersproject/keccak256": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/pbkdf2": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"@ethersproject/random": "^5.0.0",
"@ethersproject/strings": "^5.0.0",
"@ethersproject/transactions": "^5.0.0",
"aes-js": "3.0.0",
"scrypt-js": "3.0.1",
"uuid": "2.0.1"
},
"dependencies": {
"scrypt-js": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz",
"integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA=="
}
}
},
"@ethersproject/keccak256": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.1.tgz",
"integrity": "sha512-AtFm/4qHRQUvZcG3WYmaT7zV79dz72+N01w0XphcIBaD/7UZXyW85Uf08sirVlckHmh9fvc4UDWyHiroKsBT6Q==",
"requires": {
"@ethersproject/bytes": "^5.0.0",
"js-sha3": "0.5.7"
}
},
"@ethersproject/logger": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.2.tgz",
"integrity": "sha512-NQe3O1/Nwkcp6bto6hsTvrcCeR/cOGK+RhOMn0Zi2FND6gdWsf1g+5ie8gQ1REqDX4MTGP/Y131dZas985ls/g=="
},
"@ethersproject/networks": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.1.tgz",
"integrity": "sha512-Pe34JCTC6Apm/DkK3z97xotvEyu9YHKIFlDIu5hGV6yFDb4/sUfY2SHKYSGdUrV0418ZZVrwYDveJtBFMmYu2Q==",
"requires": {
"@ethersproject/logger": "^5.0.0"
}
},
"@ethersproject/pbkdf2": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.0.1.tgz",
"integrity": "sha512-4wc8Aov0iJmiomu6Dv1JNGOlhm3L7omITjLmChz/vgeDnW4Unv4J/nGybCeWKgY4hnjyQMVXkdkQ15BCRbkaYg==",
"requires": {
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/sha2": "^5.0.0"
}
},
"@ethersproject/properties": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.1.tgz",
"integrity": "sha512-b3VZ/NpYIf64/hFXeWNxVCbY1xoMPIYM3n6Qnu6Ayr3bLt1olFPQfAaaRB0aOsLz7tMtmkT3DrA1KG/IrOgBRw==",
"requires": {
"@ethersproject/logger": "^5.0.0"
}
},
"@ethersproject/providers": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.0.2.tgz",
"integrity": "sha512-28ABJmHB9ii/73F3P9CXLBvlRkitiOGHCrUZqjQ6FELuAtKEROqA/yDklT9o/r/BpGcGTeeWpWfvdfgDHjshiw==",
"requires": {
"@ethersproject/abstract-provider": "^5.0.0",
"@ethersproject/abstract-signer": "^5.0.0",
"@ethersproject/address": "^5.0.0",
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/constants": "^5.0.0",
"@ethersproject/hash": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/networks": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"@ethersproject/random": "^5.0.0",
"@ethersproject/rlp": "^5.0.0",
"@ethersproject/strings": "^5.0.0",
"@ethersproject/transactions": "^5.0.0",
"@ethersproject/web": "^5.0.0",
"ws": "7.2.3"
},
"dependencies": {
"ws": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz",
"integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ=="
}
}
},
"@ethersproject/random": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.0.1.tgz",
"integrity": "sha512-nYzNhcp5Th4dCocV3yceZmh80bRmSQxqNRgND7Y/YgEgYJSSnknScpfRHACG//kgbsY8zui8ajXJeEnzS7yFbQ==",
"requires": {
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/logger": "^5.0.0"
}
},
"@ethersproject/rlp": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.1.tgz",
"integrity": "sha512-3F8XE1zS4w8w4xiK1hMtFuVs6UnhQlmrEHLT85GanqK8vG5wGi81IQmkukL9tQIu2a5jykoO46ibja+6N1fpFg==",
"requires": {
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/logger": "^5.0.0"
}
},
"@ethersproject/sha2": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.0.1.tgz",
"integrity": "sha512-5wNdULNDMJKwyzqrTH66e2TZPZTSqqluS7RNtuuuQSTP+yIALoID7ewLjDoj31g4kZyq/pqQbackKJLOXejTKw==",
"requires": {
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"hash.js": "1.1.3"
}
},
"@ethersproject/signing-key": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.1.tgz",
"integrity": "sha512-Z3yMPFFf4KkWltndDNi/tpese7qZh6ZWKbGu3DHd8xOX0PJqbScdAs6gCfFeMatO06qyX307Y52soc/Ayf8ZSg==",
"requires": {
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"elliptic": "6.5.2"
},
"dependencies": {
"elliptic": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
"integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==",
"requires": {
"bn.js": "^4.4.0",
"brorand": "^1.0.1",
"hash.js": "^1.0.0",
"hmac-drbg": "^1.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0",
"minimalistic-crypto-utils": "^1.0.0"
}
}
}
},
"@ethersproject/solidity": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.0.1.tgz",
"integrity": "sha512-3L+xI1LaJmd2zBJxnK9Y4cd1vb2aJLFvL6fxvjWpzcMiFiZ4dbPwj3kharv5f5mAlbGwAs6NiPJaFWvbOpm96Q==",
"requires": {
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/keccak256": "^5.0.0",
"@ethersproject/sha2": "^5.0.0",
"@ethersproject/strings": "^5.0.0"
}
},
"@ethersproject/strings": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.1.tgz",
"integrity": "sha512-N8LxdHGBT7GZdogkEOV5xKXYTz5PNHuNzcxLNPYfH3kpvWSyXshZBgAz8YE1a8sMZagGj+Ic6d3mHijdCTSkGA==",
"requires": {
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/constants": "^5.0.0",
"@ethersproject/logger": "^5.0.0"
}
},
"@ethersproject/transactions": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.1.tgz",
"integrity": "sha512-IGc6/5hri3PrqR/ZCj89osDiq3Lt0CSrycn6vlRl8SjpBKYDdcT+Ru5xkeC7YcsnqcdBmTL+jyR3SLudU+x2Kw==",
"requires": {
"@ethersproject/address": "^5.0.0",
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/constants": "^5.0.0",
"@ethersproject/keccak256": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"@ethersproject/rlp": "^5.0.0",
"@ethersproject/signing-key": "^5.0.0"
}
},
"@ethersproject/units": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.0.1.tgz",
"integrity": "sha512-7J7Jmm4hMZ+yFiqEd7D5oeVK/V74GDwQlT0Om1yxXLYX6UPcV5ChHkUz/xpHPT9JXQlQ+2D69HBf1dzvdflrmQ==",
"requires": {
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/constants": "^5.0.0",
"@ethersproject/logger": "^5.0.0"
}
},
"@ethersproject/wallet": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.0.1.tgz",
"integrity": "sha512-1/QPpFngJtUGtdVOLSoIN3vf+zEWyEVxQ0lhRCwGkiBqL2SoVoDHB7/nCfcv7wwlZkdnegFfo/8DxeyYjTZN7w==",
"requires": {
"@ethersproject/abstract-provider": "^5.0.0",
"@ethersproject/abstract-signer": "^5.0.0",
"@ethersproject/address": "^5.0.0",
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/hash": "^5.0.0",
"@ethersproject/hdnode": "^5.0.0",
"@ethersproject/json-wallets": "^5.0.0",
"@ethersproject/keccak256": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"@ethersproject/random": "^5.0.0",
"@ethersproject/signing-key": "^5.0.0",
"@ethersproject/transactions": "^5.0.0",
"@ethersproject/wordlists": "^5.0.0"
}
},
"@ethersproject/web": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.1.tgz",
"integrity": "sha512-lWPg8BR6KoyiIKYRIM6j+XO9bT9vGM1JnxFj2HmhIvOrOjba7ZRd8ANBOsDVGfw5igLUdfqAUOf9WpSsH//TzA==",
"requires": {
"@ethersproject/base64": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"@ethersproject/strings": "^5.0.0"
}
},
"@ethersproject/wordlists": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.0.1.tgz",
"integrity": "sha512-R7boLmpewucz5v4jD7cWwI0BGHR/DstiZtjdhUOft6XdMqM1OGb1UTL0GBQeS4vDXzCLuJEHddjJ69beGVN/4Q==",
"requires": {
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/hash": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"@ethersproject/strings": "^5.0.0"
}
},
"@types/node": {
"version": "10.14.4",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.4.tgz",
@ -262,6 +679,16 @@
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
},
"bech32": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz",
"integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ=="
},
"big-integer": {
"version": "1.6.36",
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz",
"integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg=="
},
"bignumber.js": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-8.1.1.tgz",
@ -617,6 +1044,35 @@
"sha.js": "^2.4.8"
}
},
"crypto-addr-codec": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz",
"integrity": "sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg==",
"requires": {
"base-x": "^3.0.8",
"big-integer": "1.6.36",
"blakejs": "^1.1.0",
"bs58": "^4.0.1",
"ripemd160-min": "0.0.6",
"safe-buffer": "^5.2.0",
"sha3": "^2.1.1"
},
"dependencies": {
"base-x": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz",
"integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==",
"requires": {
"safe-buffer": "^5.0.1"
}
},
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
}
}
},
"cycle": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
@ -747,38 +1203,39 @@
"integrity": "sha512-DqtdXNHGi/QtOjEovNOegVVQTd8/NnH9rP27R5SU3j2LKECZbcLGIZ3Z9Ln1SDaeUC5YJGJFYQCUUjfIi7NNyQ=="
},
"ethers": {
"version": "4.0.27",
"resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.27.tgz",
"integrity": "sha512-+DXZLP/tyFnXWxqr2fXLT67KlGUfLuvDkHSOtSC9TUVG9OIj6yrG5JPeXRMYo15xkOYwnjgdMKrXp5V94rtjJA==",
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/ethers/-/ethers-5.0.2.tgz",
"integrity": "sha512-hAWTPQXvjFlrtnPLCnOOJJuqiqmJv820egPHpOwcWTIQxXRrcfZyse2692eaqsXMeYLNM2CRfYgEomBiBGvgjw==",
"requires": {
"@types/node": "^10.3.2",
"aes-js": "3.0.0",
"bn.js": "^4.4.0",
"elliptic": "6.3.3",
"hash.js": "1.1.3",
"js-sha3": "0.5.7",
"scrypt-js": "2.0.4",
"setimmediate": "1.0.4",
"uuid": "2.0.1",
"xmlhttprequest": "1.8.0"
},
"dependencies": {
"elliptic": {
"version": "6.3.3",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
"integrity": "sha1-VILZZG1UvLif19mU/J4ulWiHbj8=",
"requires": {
"bn.js": "^4.4.0",
"brorand": "^1.0.1",
"hash.js": "^1.0.0",
"inherits": "^2.0.1"
}
},
"js-sha3": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz",
"integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc="
}
"@ethersproject/abi": "^5.0.0",
"@ethersproject/abstract-provider": "^5.0.0",
"@ethersproject/abstract-signer": "^5.0.0",
"@ethersproject/address": "^5.0.0",
"@ethersproject/base64": "^5.0.0",
"@ethersproject/bignumber": "^5.0.0",
"@ethersproject/bytes": "^5.0.0",
"@ethersproject/constants": "^5.0.0",
"@ethersproject/contracts": "^5.0.0",
"@ethersproject/hash": "^5.0.0",
"@ethersproject/hdnode": "^5.0.0",
"@ethersproject/json-wallets": "^5.0.0",
"@ethersproject/keccak256": "^5.0.0",
"@ethersproject/logger": "^5.0.0",
"@ethersproject/networks": "^5.0.0",
"@ethersproject/pbkdf2": "^5.0.0",
"@ethersproject/properties": "^5.0.0",
"@ethersproject/providers": "^5.0.0",
"@ethersproject/random": "^5.0.0",
"@ethersproject/rlp": "^5.0.0",
"@ethersproject/sha2": "^5.0.0",
"@ethersproject/signing-key": "^5.0.0",
"@ethersproject/solidity": "^5.0.0",
"@ethersproject/strings": "^5.0.0",
"@ethersproject/transactions": "^5.0.0",
"@ethersproject/units": "^5.0.0",
"@ethersproject/wallet": "^5.0.0",
"@ethersproject/web": "^5.0.0",
"@ethersproject/wordlists": "^5.0.0"
}
},
"events": {
@ -2201,6 +2658,11 @@
"inherits": "^2.0.1"
}
},
"ripemd160-min": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz",
"integrity": "sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A=="
},
"rsa-pem-to-jwk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/rsa-pem-to-jwk/-/rsa-pem-to-jwk-1.1.3.tgz",
@ -2349,6 +2811,25 @@
"safe-buffer": "^5.0.1"
}
},
"sha3": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.2.tgz",
"integrity": "sha512-agYUtkzMsdFTQkM3ECyt6YW0552fyEb0tYZkl7olurS1Vg2Ms5+2SdF4VFPC1jnwtiXMb8b0fSyuAGZh+q2mAw==",
"requires": {
"buffer": "5.5.0"
},
"dependencies": {
"buffer": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz",
"integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==",
"requires": {
"base64-js": "^1.0.2",
"ieee754": "^1.1.4"
}
}
}
},
"signed-varint": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz",

View File

@ -12,7 +12,8 @@
"dependencies": {
"cors": "^2.8.5",
"eth-provider": "^0.2.2",
"ethers": "^4.0.27",
"ethers": "^5.0.2",
"@ethersproject/experimental": "5.0.0",
"express": "^4.17.1",
"express-session": "^1.16.2",
"grant-express": "^4.6.1",