From 016dd3081b46ba7463620c4ffb73a614ef8c7138 Mon Sep 17 00:00:00 2001 From: "Michael Bradley, Jr" Date: Mon, 15 Mar 2021 14:24:45 -0500 Subject: [PATCH] refactor: nim_status -> status_go Also, `status_go.startWallet` proc should be called with a boolean argument. --- src/app/wallet/core.nim | 2 +- src/nim_status_client.nim | 4 +-- src/status/libstatus/accounts.nim | 50 +++++++++++++++---------------- src/status/libstatus/core.nim | 14 ++++----- src/status/libstatus/wallet.nim | 18 +++++------ vendor/nim-status-go | 2 +- 6 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/app/wallet/core.nim b/src/app/wallet/core.nim index 436bf97830..0c18077aac 100644 --- a/src/app/wallet/core.nim +++ b/src/app/wallet/core.nim @@ -74,4 +74,4 @@ proc checkPendingTransactions*(self: WalletController) = self.status.wallet.checkPendingTransactions() # TODO: consider doing this in a spawnAndSend proc start*(self: WalletController) = - status_wallet.startWallet() \ No newline at end of file + status_wallet.startWallet(false) diff --git a/src/nim_status_client.nim b/src/nim_status_client.nim index 0060167f11..94fe69f325 100644 --- a/src/nim_status_client.nim +++ b/src/nim_status_client.nim @@ -12,7 +12,7 @@ import app/provider/core as provider import status/signals/core as signals import status/libstatus/types import status/libstatus/accounts/constants -import nim_status +import status_go import status/status as statuslib import ./eventemitter @@ -192,7 +192,7 @@ proc mainProc() = signal_handler(signalsQObjPointer, p0, "receiveSignal") tearDownForeignThreadGc() - nim_status.setSignalEventCallback(callback) + status_go.setSignalEventCallback(callback) # Qt main event loop is entered here # The termination of the loop will be performed when exit() or quit() is called diff --git a/src/status/libstatus/accounts.nim b/src/status/libstatus/accounts.nim index 0e9de89c68..ad8b4ffed3 100644 --- a/src/status/libstatus/accounts.nim +++ b/src/status/libstatus/accounts.nim @@ -1,6 +1,6 @@ import json, os, nimcrypto, uuids, json_serialization, chronicles, strutils -from nim_status import multiAccountGenerateAndDeriveAddresses, generateAlias, identicon, saveAccountAndLogin, login, openAccounts +from status_go import multiAccountGenerateAndDeriveAddresses, generateAlias, identicon, saveAccountAndLogin, login, openAccounts import core import utils as utils import types as types @@ -31,7 +31,7 @@ proc getNodeConfig*(fleetConfig: FleetConfig, installationId: string, networkCon result["ShhextConfig"]["InstallationID"] = newJString(installationId) # TODO: commented since it's not necessary (we do the connections thru C bindings). Enable it thru an option once status-nodes are able to be configured in desktop # result["ListenAddr"] = if existsEnv("STATUS_PORT"): newJString("0.0.0.0:" & $getEnv("STATUS_PORT")) else: newJString("0.0.0.0:30305") - + proc getNodeConfig*(fleetConfig: FleetConfig, installationId: string, currentNetwork: string = constants.DEFAULT_NETWORK_NAME, fleet: Fleet = Fleet.PROD): JsonNode = let networkConfig = getNetworkConfig(currentNetwork) result = getNodeConfig(fleetConfig, installationId, networkConfig, fleet) @@ -50,14 +50,14 @@ proc generateAddresses*(n = 5): seq[GeneratedAccount] = "bip39Passphrase": "", "paths": [PATH_WALLET_ROOT, PATH_EIP_1581, PATH_WHISPER, PATH_DEFAULT_WALLET] } - let generatedAccounts = $nim_status.multiAccountGenerateAndDeriveAddresses($multiAccountConfig) + let generatedAccounts = $status_go.multiAccountGenerateAndDeriveAddresses($multiAccountConfig) result = Json.decode(generatedAccounts, seq[GeneratedAccount]) proc generateAlias*(publicKey: string): string = - result = $nim_status.generateAlias(publicKey) + result = $status_go.generateAlias(publicKey) proc generateIdenticon*(publicKey: string): string = - result = $nim_status.identicon(publicKey) + result = $status_go.identicon(publicKey) proc ensureDir(dirname: string) = if not existsDir(dirname): @@ -68,7 +68,7 @@ proc initNode*() = ensureDir(DATADIR) ensureDir(KEYSTOREDIR) - discard $nim_status.initKeystore(KEYSTOREDIR) + discard $status_go.initKeystore(KEYSTOREDIR) proc parseIdentityImage*(images: JsonNode): IdentityImage = result = IdentityImage() @@ -81,7 +81,7 @@ proc parseIdentityImage*(images: JsonNode): IdentityImage = result.large = image["uri"].getStr proc openAccounts*(): seq[NodeAccount] = - let strNodeAccounts = nim_status.openAccounts(DATADIR).parseJson + let strNodeAccounts = status_go.openAccounts(DATADIR).parseJson # FIXME fix serialization result = @[] if (strNodeAccounts.kind != JNull): @@ -95,9 +95,9 @@ proc openAccounts*(): seq[NodeAccount] = ) if (account{"images"}.kind != JNull): nodeAccount.identityImage = parseIdentityImage(account["images"]) - + result.add(nodeAccount) - + proc saveAccountAndLogin*( account: GeneratedAccount, @@ -125,7 +125,7 @@ proc saveAccountAndLogin*( } ] - var savedResult = $nim_status.saveAccountAndLogin(accountData, hashedPassword, settingsJSON, configJSON, $subaccountData) + var savedResult = $status_go.saveAccountAndLogin(accountData, hashedPassword, settingsJSON, configJSON, $subaccountData) let parsedSavedResult = savedResult.parseJson let error = parsedSavedResult["error"].getStr @@ -143,7 +143,7 @@ proc storeDerivedAccounts*(account: GeneratedAccount, password: string, paths: s "paths": paths, "password": hashedPassword } - let response = $nim_status.multiAccountStoreDerivedAccounts($multiAccount); + let response = $status_go.multiAccountStoreDerivedAccounts($multiAccount); try: result = Json.decode($response, MultiAccounts) @@ -202,12 +202,12 @@ proc setupAccount*(fleetConfig: FleetConfig, account: GeneratedAccount, password finally: # TODO this is needed for now for the retrieving of past messages. We'll either move or remove it later let peer = "enode://44160e22e8b42bd32a06c1532165fa9e096eebedd7fa6d6e5f8bbef0440bc4a4591fe3651be68193a7ec029021cdb496cfe1d7f9f1dc69eb99226e6f39a7a5d4@35.225.221.245:443" - discard nim_status.addPeer(peer) + discard status_go.addPeer(peer) proc login*(nodeAccount: NodeAccount, password: string): NodeAccount = let hashedPassword = hashPassword(password) let account = nodeAccount.toAccount - let loginResult = $nim_status.login($toJson(account), hashedPassword) + let loginResult = $status_go.login($toJson(account), hashedPassword) let error = parseJson(loginResult)["error"].getStr if error == "": @@ -223,12 +223,12 @@ proc loadAccount*(address: string, password: string): GeneratedAccount = "address": address, "password": hashedPassword } - let loadResult = $nim_status.multiAccountLoadAccount($inputJson) + let loadResult = $status_go.multiAccountLoadAccount($inputJson) result = Json.decode(loadResult, GeneratedAccount) proc verifyAccountPassword*(address: string, password: string): bool = let hashedPassword = hashPassword(password) - let verifyResult = $nim_status.verifyAccountPassword(KEYSTOREDIR, address, hashedPassword) + let verifyResult = $status_go.verifyAccountPassword(KEYSTOREDIR, address, hashedPassword) let error = parseJson(verifyResult)["error"].getStr if error == "": @@ -241,17 +241,17 @@ proc multiAccountImportMnemonic*(mnemonic: string): GeneratedAccount = "mnemonicPhrase": mnemonic, "Bip39Passphrase": "" } - # nim_status.multiAccountImportMnemonic never results in an error given ANY input - let importResult = $nim_status.multiAccountImportMnemonic($mnemonicJson) + # status_go.multiAccountImportMnemonic never results in an error given ANY input + let importResult = $status_go.multiAccountImportMnemonic($mnemonicJson) result = Json.decode(importResult, GeneratedAccount) proc MultiAccountImportPrivateKey*(privateKey: string): GeneratedAccount = let privateKeyJson = %* { "privateKey": privateKey } - # nim_status.MultiAccountImportPrivateKey never results in an error given ANY input + # status_go.MultiAccountImportPrivateKey never results in an error given ANY input try: - let importResult = $nim_status.multiAccountImportPrivateKey($privateKeyJson) + let importResult = $status_go.multiAccountImportPrivateKey($privateKeyJson) result = Json.decode(importResult, GeneratedAccount) except Exception as e: error "Error getting account from private key", msg=e.msg @@ -265,7 +265,7 @@ proc storeDerivedWallet*(account: GeneratedAccount, password: string, walletInde "paths": [derivationPath], "password": hashedPassword } - let response = parseJson($nim_status.multiAccountStoreDerivedAccounts($multiAccount)); + let response = parseJson($status_go.multiAccountStoreDerivedAccounts($multiAccount)); let error = response{"error"}.getStr if error == "": debug "Wallet stored succesfully" @@ -274,7 +274,7 @@ proc storeDerivedWallet*(account: GeneratedAccount, password: string, walletInde proc storePrivateKeyAccount*(account: GeneratedAccount, password: string) = let hashedPassword = hashPassword(password) - let response = parseJson($nim_status.multiAccountStoreAccount($(%*{"accountID": account.id, "password": hashedPassword}))); + let response = parseJson($status_go.multiAccountStoreAccount($(%*{"accountID": account.id, "password": hashedPassword}))); let error = response{"error"}.getStr if error == "": debug "Wallet stored succesfully" @@ -349,9 +349,9 @@ proc deriveWallet*(accountId: string, walletIndex: int): DerivedAccount = "accountID": accountId, "paths": [path] } - let deriveResult = parseJson($nim_status.multiAccountDeriveAddresses($deriveJson)) + let deriveResult = parseJson($status_go.multiAccountDeriveAddresses($deriveJson)) result = DerivedAccount( - address: deriveResult[path]["address"].getStr, + address: deriveResult[path]["address"].getStr, publicKey: deriveResult[path]["publicKey"].getStr) proc deriveAccounts*(accountId: string): MultiAccounts = @@ -359,11 +359,11 @@ proc deriveAccounts*(accountId: string): MultiAccounts = "accountID": accountId, "paths": [PATH_WALLET_ROOT, PATH_EIP_1581, PATH_WHISPER, PATH_DEFAULT_WALLET] } - let deriveResult = $nim_status.multiAccountDeriveAddresses($deriveJson) + let deriveResult = $status_go.multiAccountDeriveAddresses($deriveJson) result = Json.decode(deriveResult, MultiAccounts) proc logout*(): StatusGoError = - result = Json.decode($nim_status.logout(), StatusGoError) + result = Json.decode($status_go.logout(), StatusGoError) proc storeIdentityImage*(keyUID: string, imagePath: string, aX, aY, bX, bY: int): IdentityImage = let response = callPrivateRPC("multiaccounts_storeIdentityImage", %* [keyUID, imagePath, aX, aY, bX, bY]).parseJson diff --git a/src/status/libstatus/core.nim b/src/status/libstatus/core.nim index 67711d19c2..9d8e27fb2c 100644 --- a/src/status/libstatus/core.nim +++ b/src/status/libstatus/core.nim @@ -1,14 +1,14 @@ import json, nimcrypto, chronicles -import nim_status, utils +import status_go, utils logScope: topics = "rpc" proc callRPC*(inputJSON: string): string = - return $nim_status.callRPC(inputJSON) + return $status_go.callRPC(inputJSON) proc callPrivateRPCRaw*(inputJSON: string): string = - return $nim_status.callPrivateRPC(inputJSON) + return $status_go.callPrivateRPC(inputJSON) proc callPrivateRPC*(methodName: string, payload = %* []): string = try: @@ -18,7 +18,7 @@ proc callPrivateRPC*(methodName: string, payload = %* []): string = "params": %payload } debug "callPrivateRPC", rpc_method=methodName - let response = nim_status.callPrivateRPC($inputJSON) + let response = status_go.callPrivateRPC($inputJSON) result = $response if parseJSON(result).hasKey("error"): error "rpc response error", result = result @@ -27,7 +27,7 @@ proc callPrivateRPC*(methodName: string, payload = %* []): string = proc sendTransaction*(inputJSON: string, password: string): string = var hashed_password = "0x" & $keccak_256.digest(password) - return $nim_status.sendTransaction(inputJSON, hashed_password) + return $status_go.sendTransaction(inputJSON, hashed_password) proc startMessenger*() = discard callPrivateRPC("startMessenger".prefix) @@ -51,7 +51,7 @@ proc getTransfersByAddress*(address: string, toBlock: string, limit: string): st result = callPrivateRPC("wallet_getTransfersByAddress", %* [address, toBlock, limit]) proc signMessage*(rpcParams: string): string = - return $nim_status.signMessage(rpcParams) + return $status_go.signMessage(rpcParams) proc signTypedData*(data: string, address: string, password: string): string = - return $nim_status.signTypedData(data, address, password) + return $status_go.signTypedData(data, address, password) diff --git a/src/status/libstatus/wallet.nim b/src/status/libstatus/wallet.nim index dfac7d414a..2d62bf3c11 100644 --- a/src/status/libstatus/wallet.nim +++ b/src/status/libstatus/wallet.nim @@ -1,7 +1,7 @@ import json, json, options, json_serialization, stint, chronicles import core, types, utils, strutils, strformat import utils -from nim_status import validateMnemonic, startWallet +from status_go import validateMnemonic, startWallet import ../wallet/account import web3/ethtypes import ./types @@ -37,7 +37,7 @@ proc getTransfersByAddress*(address: string, blockNumber: string = "latest"): se try: let response = getBlockByNumber(blockNumber) let latestBlock = parseJson(response)["result"] - + let transactionsResponse = getTransfersByAddress(address, latestBlock["number"].getStr, "0x14") let transactions = parseJson(transactionsResponse)["result"] var accountTransactions: seq[types.Transaction] = @[] @@ -73,7 +73,7 @@ proc getBalance*(address: string): string = let response = parseJson(callPrivateRPC("eth_getBalance", payload)) if response.hasKey("error"): raise newException(RpcException, "Error getting balance: " & $response["error"]) - else: + else: result = response["result"].str proc hex2Eth*(input: string): string = @@ -81,10 +81,10 @@ proc hex2Eth*(input: string): string = result = utils.wei2Eth(value) proc validateMnemonic*(mnemonic: string): string = - result = $nim_status.validateMnemonic(mnemonic) + result = $status_go.validateMnemonic(mnemonic) -proc startWallet*() = - discard nim_status.startWallet() # TODO: true to watch trx +proc startWallet*(watchNewBlocks: bool) = + discard status_go.startWallet(watchNewBlocks) # TODO: true to watch trx proc hex2Token*(input: string, decimals: int): string = var value = fromHex(Stuint[256], input) @@ -92,10 +92,10 @@ proc hex2Token*(input: string, decimals: int): string = var i = value.div(p) var r = value.mod(p) var leading_zeros = "0".repeat(decimals - ($r).len) - var d = fmt"{leading_zeros}{$r}" + var d = fmt"{leading_zeros}{$r}" result = $i if(r > 0): result = fmt"{result}.{d}" - + proc trackPendingTransaction*(transactionHash: string, fromAddress: string, toAddress: string, trxType: PendingTransactionType, data: string) = let blockNumber = parseInt($fromHex(Stuint[256], getBlockByNumber("latest").parseJson()["result"]["number"].getStr)) let payload = %* [{"transactionHash": transactionHash, "blockNumber": blockNumber, "from_address": fromAddress, "to_address": toAddress, "type": $trxType, "data": data}] @@ -108,7 +108,7 @@ proc getPendingTransactions*(): string = except Exception as e: error "Error getting pending transactions (possible dev Infura key)", msg = e.msg result = "" - + proc getPendingOutboundTransactionsByAddress*(address: string): string = let payload = %* [address] diff --git a/vendor/nim-status-go b/vendor/nim-status-go index bbdbe2a7eb..f1ec58561d 160000 --- a/vendor/nim-status-go +++ b/vendor/nim-status-go @@ -1 +1 @@ -Subproject commit bbdbe2a7ebb75bf228ddc553126caa96ec202f18 +Subproject commit f1ec58561d7b48f6c8b664f3806fd8a113164fba