2019-10-18 11:45:19 -07:00
|
|
|
//
|
|
|
|
// Stubs.swift
|
|
|
|
// ZcashLightClientKitTests
|
|
|
|
//
|
|
|
|
// Created by Francisco Gindre on 18/09/2019.
|
|
|
|
// Copyright © 2019 Electric Coin Company. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
import Foundation
|
2020-04-09 15:25:43 -07:00
|
|
|
import GRPC
|
2019-12-16 14:25:45 -08:00
|
|
|
import SwiftProtobuf
|
2019-11-14 06:38:54 -08:00
|
|
|
@testable import ZcashLightClientKit
|
2019-10-18 11:45:19 -07:00
|
|
|
|
2021-09-23 06:26:41 -07:00
|
|
|
// swiftlint:disable function_parameter_count identifier_name
|
2019-12-16 14:25:45 -08:00
|
|
|
class AwfulLightWalletService: MockLightWalletService {
|
|
|
|
override func latestBlockHeight() throws -> BlockHeight {
|
2020-08-10 15:19:59 -07:00
|
|
|
throw LightWalletServiceError.criticalError
|
2019-10-18 11:45:19 -07:00
|
|
|
}
|
|
|
|
|
2022-10-03 16:05:11 -07:00
|
|
|
override func latestBlockHeightAsync() async throws -> BlockHeight {
|
2019-10-18 11:45:19 -07:00
|
|
|
throw LightWalletServiceError.invalidBlock
|
|
|
|
}
|
|
|
|
|
2022-08-26 10:52:12 -07:00
|
|
|
override func blockRange(_ range: CompactBlockRange) -> AsyncThrowingStream<ZcashCompactBlock, Error> {
|
|
|
|
AsyncThrowingStream { continuation in continuation.finish(throwing: LightWalletServiceError.invalidBlock) }
|
|
|
|
}
|
|
|
|
|
2022-10-03 16:05:11 -07:00
|
|
|
/// Submits a raw transaction over lightwalletd.
|
|
|
|
override func submit(spendTransaction: Data) async throws -> LightWalletServiceResponse {
|
2020-08-10 15:19:59 -07:00
|
|
|
throw LightWalletServiceError.invalidBlock
|
2019-12-03 07:19:44 -08:00
|
|
|
}
|
2019-10-18 11:45:19 -07:00
|
|
|
}
|
2019-11-14 06:38:54 -08:00
|
|
|
|
2022-10-03 16:05:11 -07:00
|
|
|
extension LightWalletServiceMockResponse: Error { }
|
2021-09-23 06:26:41 -07:00
|
|
|
|
2022-10-03 16:05:11 -07:00
|
|
|
class SlightlyBadLightWalletService: MockLightWalletService {
|
|
|
|
/// Submits a raw transaction over lightwalletd.
|
|
|
|
override func submit(spendTransaction: Data) async throws -> LightWalletServiceResponse {
|
|
|
|
throw LightWalletServiceMockResponse.error
|
2019-12-16 14:25:45 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
extension LightWalletServiceMockResponse {
|
|
|
|
static var error: LightWalletServiceMockResponse {
|
2021-09-23 06:26:41 -07:00
|
|
|
LightWalletServiceMockResponse(
|
|
|
|
errorCode: -100,
|
|
|
|
errorMessage: "Ohhh this is bad, really bad, you lost all your internet money",
|
|
|
|
unknownFields: UnknownStorage()
|
|
|
|
)
|
2019-12-16 14:25:45 -08:00
|
|
|
}
|
2021-09-23 06:26:41 -07:00
|
|
|
|
2019-12-16 14:25:45 -08:00
|
|
|
static var success: LightWalletServiceMockResponse {
|
|
|
|
LightWalletServiceMockResponse(errorCode: 0, errorMessage: "", unknownFields: UnknownStorage())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-11-14 06:38:54 -08:00
|
|
|
class MockRustBackend: ZcashRustBackendWelding {
|
2022-11-01 09:57:42 -07:00
|
|
|
static func initAccountsTable(dbData: URL, ufvks: [ZcashLightClientKit.UnifiedFullViewingKey], networkType: ZcashLightClientKit.NetworkType) throws {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2022-10-27 16:09:08 -07:00
|
|
|
static func createToAddress(dbData: URL, usk: ZcashLightClientKit.UnifiedSpendingKey, to address: String, value: Int64, memo: ZcashLightClientKit.MemoBytes?, spendParamsPath: String, outputParamsPath: String, networkType: ZcashLightClientKit.NetworkType) -> Int64 {
|
|
|
|
-1
|
|
|
|
}
|
|
|
|
|
|
|
|
static func shieldFunds(dbCache: URL, dbData: URL, usk: ZcashLightClientKit.UnifiedSpendingKey, memo: ZcashLightClientKit.MemoBytes?, spendParamsPath: String, outputParamsPath: String, networkType: ZcashLightClientKit.NetworkType) -> Int64 {
|
|
|
|
-1
|
|
|
|
}
|
|
|
|
|
2022-09-30 06:45:51 -07:00
|
|
|
static func getAddressMetadata(_ address: String) -> ZcashLightClientKit.AddressMetadata? {
|
|
|
|
nil
|
|
|
|
}
|
|
|
|
|
2022-10-02 19:11:17 -07:00
|
|
|
static func clearUtxos(dbData: URL, address: ZcashLightClientKit.TransparentAddress, sinceHeight: ZcashLightClientKit.BlockHeight, networkType: ZcashLightClientKit.NetworkType) throws -> Int32 {
|
|
|
|
0
|
|
|
|
}
|
|
|
|
|
|
|
|
static func getTransparentBalance(dbData: URL, account: Int32, networkType: ZcashLightClientKit.NetworkType) throws -> Int64 {
|
|
|
|
0
|
|
|
|
}
|
|
|
|
|
|
|
|
static func getVerifiedTransparentBalance(dbData: URL, account: Int32, networkType: ZcashLightClientKit.NetworkType) throws -> Int64 {
|
|
|
|
0
|
|
|
|
}
|
|
|
|
|
|
|
|
static func listTransparentReceivers(dbData: URL, account: Int32, networkType: ZcashLightClientKit.NetworkType) throws -> [ZcashLightClientKit.TransparentAddress] {
|
2022-09-14 17:40:46 -07:00
|
|
|
[]
|
|
|
|
}
|
|
|
|
|
2022-10-02 19:11:17 -07:00
|
|
|
static func deriveUnifiedFullViewingKey(from spendingKey: ZcashLightClientKit.UnifiedSpendingKey, networkType: ZcashLightClientKit.NetworkType) throws -> ZcashLightClientKit.UnifiedFullViewingKey {
|
|
|
|
throw KeyDerivationErrors.unableToDerive
|
|
|
|
}
|
|
|
|
|
|
|
|
static func deriveUnifiedSpendingKey(from seed: [UInt8], accountIndex: Int32, networkType: ZcashLightClientKit.NetworkType) throws -> ZcashLightClientKit.UnifiedSpendingKey {
|
|
|
|
throw KeyDerivationErrors.unableToDerive
|
|
|
|
}
|
|
|
|
|
|
|
|
static func getCurrentAddress(dbData: URL, account: Int32, networkType: ZcashLightClientKit.NetworkType) throws -> ZcashLightClientKit.UnifiedAddress {
|
|
|
|
throw KeyDerivationErrors.unableToDerive
|
|
|
|
}
|
|
|
|
|
|
|
|
static func getNextAvailableAddress(dbData: URL, account: Int32, networkType: ZcashLightClientKit.NetworkType) throws -> ZcashLightClientKit.UnifiedAddress {
|
|
|
|
throw KeyDerivationErrors.unableToDerive
|
|
|
|
}
|
|
|
|
|
|
|
|
static func getSaplingReceiver(for uAddr: ZcashLightClientKit.UnifiedAddress) throws -> ZcashLightClientKit.SaplingAddress? {
|
|
|
|
throw KeyDerivationErrors.unableToDerive
|
|
|
|
}
|
|
|
|
|
|
|
|
static func getTransparentReceiver(for uAddr: ZcashLightClientKit.UnifiedAddress) throws -> ZcashLightClientKit.TransparentAddress? {
|
|
|
|
throw KeyDerivationErrors.unableToDerive
|
|
|
|
}
|
|
|
|
|
|
|
|
static func shieldFunds(dbCache: URL, dbData: URL, usk: ZcashLightClientKit.UnifiedSpendingKey, memo: ZcashLightClientKit.MemoBytes, spendParamsPath: String, outputParamsPath: String, networkType: ZcashLightClientKit.NetworkType) -> Int64 {
|
|
|
|
-1
|
|
|
|
}
|
|
|
|
|
|
|
|
static func receiverTypecodesOnUnifiedAddress(_ address: String) throws -> [UInt32] {
|
|
|
|
throw KeyDerivationErrors.receiverNotFound
|
|
|
|
}
|
|
|
|
|
|
|
|
static func createAccount(dbData: URL, seed: [UInt8], networkType: ZcashLightClientKit.NetworkType) throws -> ZcashLightClientKit.UnifiedSpendingKey {
|
|
|
|
throw KeyDerivationErrors.unableToDerive
|
|
|
|
}
|
|
|
|
|
2022-09-08 16:44:38 -07:00
|
|
|
static func getReceivedMemo(dbData: URL, idNote: Int64, networkType: ZcashLightClientKit.NetworkType) -> ZcashLightClientKit.Memo? {
|
|
|
|
nil
|
|
|
|
}
|
|
|
|
|
|
|
|
static func getSentMemo(dbData: URL, idNote: Int64, networkType: ZcashLightClientKit.NetworkType) -> ZcashLightClientKit.Memo? {
|
|
|
|
nil
|
|
|
|
}
|
|
|
|
|
2022-10-02 19:11:17 -07:00
|
|
|
static func createToAddress(dbData: URL, usk: ZcashLightClientKit.UnifiedSpendingKey, to address: String, value: Int64, memo: ZcashLightClientKit.MemoBytes, spendParamsPath: String, outputParamsPath: String, networkType: ZcashLightClientKit.NetworkType) -> Int64 {
|
2022-09-08 16:44:38 -07:00
|
|
|
-1
|
|
|
|
}
|
|
|
|
|
2022-08-24 08:38:42 -07:00
|
|
|
static func initDataDb(dbData: URL, seed: [UInt8]?, networkType: ZcashLightClientKit.NetworkType) throws -> ZcashLightClientKit.DbInitResult {
|
|
|
|
.seedRequired
|
|
|
|
}
|
|
|
|
|
2022-08-20 15:10:22 -07:00
|
|
|
static func deriveSaplingAddressFromViewingKey(_ extfvk: ZcashLightClientKit.SaplingExtendedFullViewingKey, networkType: ZcashLightClientKit.NetworkType) throws -> ZcashLightClientKit.SaplingAddress {
|
|
|
|
throw RustWeldingError.unableToDeriveKeys
|
|
|
|
}
|
|
|
|
|
2022-10-02 19:11:17 -07:00
|
|
|
static func isValidSaplingExtendedSpendingKey(_ key: String, networkType: ZcashLightClientKit.NetworkType) -> Bool {
|
2022-08-20 15:10:22 -07:00
|
|
|
false
|
|
|
|
}
|
|
|
|
|
|
|
|
static func deriveSaplingExtendedFullViewingKeys(seed: [UInt8], accounts: Int32, networkType: ZcashLightClientKit.NetworkType) throws -> [ZcashLightClientKit.SaplingExtendedFullViewingKey]? {
|
|
|
|
nil
|
|
|
|
}
|
|
|
|
|
2022-10-02 19:11:17 -07:00
|
|
|
static func isValidUnifiedAddress(_ address: String, networkType: ZcashLightClientKit.NetworkType) -> Bool {
|
2022-08-20 15:10:22 -07:00
|
|
|
false
|
|
|
|
}
|
|
|
|
|
|
|
|
static func deriveSaplingExtendedFullViewingKey(_ spendingKey: SaplingExtendedSpendingKey, networkType: ZcashLightClientKit.NetworkType) throws -> ZcashLightClientKit.SaplingExtendedFullViewingKey? {
|
|
|
|
nil
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public func deriveViewingKeys(seed: [UInt8], numberOfAccounts: Int) throws -> [UnifiedFullViewingKey] {
|
|
|
|
[]
|
|
|
|
}
|
2021-05-28 15:45:18 -07:00
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func getNearestRewindHeight(dbData: URL, height: Int32, networkType: NetworkType) -> Int32 {
|
2021-04-19 10:16:24 -07:00
|
|
|
-1
|
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func network(dbData: URL, address: String, sinceHeight: BlockHeight, networkType: NetworkType) throws -> Int32 {
|
2021-04-08 10:18:16 -07:00
|
|
|
-1
|
|
|
|
}
|
|
|
|
|
2022-06-28 15:02:02 -07:00
|
|
|
static func initAccountsTable(dbData: URL, ufvks: [UnifiedFullViewingKey], networkType: NetworkType) throws -> Bool {
|
2021-04-02 15:18:16 -07:00
|
|
|
false
|
|
|
|
}
|
|
|
|
|
2021-09-23 06:26:41 -07:00
|
|
|
static func putUnspentTransparentOutput(
|
|
|
|
dbData: URL,
|
|
|
|
txid: [UInt8],
|
|
|
|
index: Int,
|
|
|
|
script: [UInt8],
|
|
|
|
value: Int64,
|
|
|
|
height: BlockHeight,
|
|
|
|
networkType: NetworkType
|
|
|
|
) throws -> Bool {
|
2021-04-02 15:18:16 -07:00
|
|
|
false
|
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func downloadedUtxoBalance(dbData: URL, address: String, networkType: NetworkType) throws -> WalletBalance {
|
2021-04-02 15:18:16 -07:00
|
|
|
throw RustWeldingError.genericError(message: "unimplemented")
|
|
|
|
}
|
|
|
|
|
2021-09-23 06:26:41 -07:00
|
|
|
static func createToAddress(
|
|
|
|
dbData: URL,
|
|
|
|
account: Int32,
|
|
|
|
extsk: String,
|
|
|
|
to address: String,
|
|
|
|
value: Int64,
|
|
|
|
memo: String?,
|
|
|
|
spendParamsPath: String,
|
|
|
|
outputParamsPath: String,
|
|
|
|
networkType: NetworkType
|
|
|
|
) -> Int64 {
|
2021-04-02 15:18:16 -07:00
|
|
|
-1
|
|
|
|
}
|
2022-10-02 19:11:17 -07:00
|
|
|
|
|
|
|
static func deriveTransparentAddressFromSeed(seed: [UInt8], account: Int, index: Int, networkType: NetworkType) throws -> TransparentAddress {
|
2021-04-02 15:18:16 -07:00
|
|
|
throw KeyDerivationErrors.unableToDerive
|
|
|
|
}
|
2022-10-02 19:11:17 -07:00
|
|
|
|
2022-06-28 14:40:52 -07:00
|
|
|
static func deriveUnifiedFullViewingKeyFromSeed(_ seed: [UInt8], numberOfAccounts: Int32, networkType: NetworkType) throws -> [UnifiedFullViewingKey] {
|
2021-04-02 15:18:16 -07:00
|
|
|
throw KeyDerivationErrors.unableToDerive
|
|
|
|
}
|
|
|
|
|
2022-10-02 19:11:17 -07:00
|
|
|
static func isValidSaplingExtendedFullViewingKey(_ key: String, networkType: NetworkType) -> Bool {
|
2021-02-22 11:43:28 -08:00
|
|
|
false
|
|
|
|
}
|
|
|
|
|
2022-10-02 19:11:17 -07:00
|
|
|
static func isValidUnifiedFullViewingKey(_ ufvk: String, networkType: NetworkType) -> Bool {
|
2022-06-28 14:40:52 -07:00
|
|
|
false
|
|
|
|
}
|
|
|
|
|
2022-08-20 15:10:22 -07:00
|
|
|
static func deriveSaplingExtendedSpendingKeys(seed: [UInt8], accounts: Int32, networkType: NetworkType) throws -> [SaplingExtendedSpendingKey]? {
|
2020-10-09 13:58:36 -07:00
|
|
|
nil
|
|
|
|
}
|
2022-10-02 19:11:17 -07:00
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func consensusBranchIdFor(height: Int32, networkType: NetworkType) throws -> Int32 {
|
2021-09-23 06:26:41 -07:00
|
|
|
guard let consensus = consensusBranchID else {
|
2021-07-28 09:59:10 -07:00
|
|
|
return try rustBackend.consensusBranchIdFor(height: height, networkType: networkType)
|
2021-06-17 16:58:30 -07:00
|
|
|
}
|
2021-09-23 06:26:41 -07:00
|
|
|
return consensus
|
2020-06-09 17:23:46 -07:00
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static var networkType = NetworkType.testnet
|
2019-11-14 06:38:54 -08:00
|
|
|
static var mockDataDb = false
|
|
|
|
static var mockAcounts = false
|
|
|
|
static var mockError: RustWeldingError?
|
|
|
|
static var mockLastError: String?
|
2022-08-20 15:10:22 -07:00
|
|
|
static var mockAccounts: [SaplingExtendedSpendingKey]?
|
2019-11-14 06:38:54 -08:00
|
|
|
static var mockAddresses: [String]?
|
|
|
|
static var mockBalance: Int64?
|
|
|
|
static var mockVerifiedBalance: Int64?
|
|
|
|
static var mockMemo: String?
|
|
|
|
static var mockSentMemo: String?
|
|
|
|
static var mockValidateCombinedChainSuccessRate: Float?
|
|
|
|
static var mockValidateCombinedChainFailAfterAttempts: Int?
|
|
|
|
static var mockValidateCombinedChainKeepFailing = false
|
|
|
|
static var mockValidateCombinedChainFailureHeight: BlockHeight = 0
|
|
|
|
static var mockScanblocksSuccessRate: Float?
|
2019-12-03 09:11:24 -08:00
|
|
|
static var mockCreateToAddress: Int64?
|
2019-11-14 06:38:54 -08:00
|
|
|
static var rustBackend = ZcashRustBackend.self
|
2021-06-17 16:58:30 -07:00
|
|
|
static var consensusBranchID: Int32?
|
2019-11-14 06:38:54 -08:00
|
|
|
|
|
|
|
static func lastError() -> RustWeldingError? {
|
|
|
|
mockError ?? rustBackend.lastError()
|
|
|
|
}
|
|
|
|
|
|
|
|
static func getLastError() -> String? {
|
|
|
|
mockLastError ?? rustBackend.getLastError()
|
|
|
|
}
|
|
|
|
|
2022-10-02 19:11:17 -07:00
|
|
|
static func isValidSaplingAddress(_ address: String, networkType: NetworkType) -> Bool {
|
2020-02-26 08:54:48 -08:00
|
|
|
true
|
|
|
|
}
|
|
|
|
|
2022-10-02 19:11:17 -07:00
|
|
|
static func isValidTransparentAddress(_ address: String, networkType: NetworkType) -> Bool {
|
2020-02-26 08:54:48 -08:00
|
|
|
true
|
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func initDataDb(dbData: URL, networkType: NetworkType) throws {
|
2019-11-14 06:38:54 -08:00
|
|
|
if !mockDataDb {
|
2022-08-24 08:38:42 -07:00
|
|
|
_ = try rustBackend.initDataDb(dbData: dbData, seed: nil, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
}
|
2022-10-02 19:11:17 -07:00
|
|
|
|
2021-09-23 06:26:41 -07:00
|
|
|
static func initBlocksTable(
|
|
|
|
dbData: URL,
|
|
|
|
height: Int32,
|
|
|
|
hash: String,
|
|
|
|
time: UInt32,
|
|
|
|
saplingTree: String,
|
|
|
|
networkType: NetworkType
|
|
|
|
) throws {
|
2019-11-14 06:38:54 -08:00
|
|
|
if !mockDataDb {
|
2021-09-23 06:26:41 -07:00
|
|
|
try rustBackend.initBlocksTable(
|
|
|
|
dbData: dbData,
|
|
|
|
height: height,
|
|
|
|
hash: hash,
|
|
|
|
time: time,
|
|
|
|
saplingTree: saplingTree,
|
|
|
|
networkType: networkType
|
|
|
|
)
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-12 05:00:31 -08:00
|
|
|
static func getBalance(dbData: URL, account: Int32, networkType: NetworkType) throws -> Int64 {
|
|
|
|
if let balance = mockBalance {
|
|
|
|
return balance
|
|
|
|
}
|
|
|
|
return try rustBackend.getBalance(dbData: dbData, account: account, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
|
2022-12-12 05:00:31 -08:00
|
|
|
static func getVerifiedBalance(dbData: URL, account: Int32, networkType: NetworkType) throws -> Int64 {
|
|
|
|
if let balance = mockVerifiedBalance {
|
|
|
|
return balance
|
|
|
|
}
|
|
|
|
|
|
|
|
return try rustBackend.getVerifiedBalance(dbData: dbData, account: account, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func getReceivedMemoAsUTF8(dbData: URL, idNote: Int64, networkType: NetworkType) -> String? {
|
|
|
|
mockMemo ?? rustBackend.getReceivedMemoAsUTF8(dbData: dbData, idNote: idNote, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func getSentMemoAsUTF8(dbData: URL, idNote: Int64, networkType: NetworkType) -> String? {
|
|
|
|
mockSentMemo ?? getSentMemoAsUTF8(dbData: dbData, idNote: idNote, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func validateCombinedChain(dbCache: URL, dbData: URL, networkType: NetworkType) -> Int32 {
|
2019-11-14 06:38:54 -08:00
|
|
|
if let rate = self.mockValidateCombinedChainSuccessRate {
|
|
|
|
if shouldSucceed(successRate: rate) {
|
2021-07-28 09:59:10 -07:00
|
|
|
return validationResult(dbCache: dbCache, dbData: dbData, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
} else {
|
|
|
|
return Int32(mockValidateCombinedChainFailureHeight)
|
|
|
|
}
|
|
|
|
} else if let attempts = self.mockValidateCombinedChainFailAfterAttempts {
|
|
|
|
self.mockValidateCombinedChainFailAfterAttempts = attempts - 1
|
|
|
|
if attempts > 0 {
|
2021-07-28 09:59:10 -07:00
|
|
|
return validationResult(dbCache: dbCache, dbData: dbData, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
} else {
|
|
|
|
if attempts == 0 {
|
|
|
|
return Int32(mockValidateCombinedChainFailureHeight)
|
|
|
|
} else if attempts < 0 && mockValidateCombinedChainKeepFailing {
|
|
|
|
return Int32(mockValidateCombinedChainFailureHeight)
|
|
|
|
} else {
|
2021-07-28 09:59:10 -07:00
|
|
|
return validationResult(dbCache: dbCache, dbData: dbData, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2021-07-28 09:59:10 -07:00
|
|
|
return rustBackend.validateCombinedChain(dbCache: dbCache, dbData: dbData, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
|
2021-09-23 06:26:41 -07:00
|
|
|
private static func validationResult(dbCache: URL, dbData: URL, networkType: NetworkType) -> Int32 {
|
2019-11-14 06:38:54 -08:00
|
|
|
if mockDataDb {
|
|
|
|
return -1
|
|
|
|
} else {
|
2021-07-28 09:59:10 -07:00
|
|
|
return rustBackend.validateCombinedChain(dbCache: dbCache, dbData: dbData, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func rewindToHeight(dbData: URL, height: Int32, networkType: NetworkType) -> Bool {
|
|
|
|
mockDataDb ? true : rustBackend.rewindToHeight(dbData: dbData, height: height, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func scanBlocks(dbCache: URL, dbData: URL, limit: UInt32, networkType: NetworkType) -> Bool {
|
2019-11-14 06:38:54 -08:00
|
|
|
if let rate = mockScanblocksSuccessRate {
|
|
|
|
if shouldSucceed(successRate: rate) {
|
2021-07-28 09:59:10 -07:00
|
|
|
return mockDataDb ? true : rustBackend.scanBlocks(dbCache: dbCache, dbData: dbData, networkType: networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
} else {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
2021-07-28 09:59:10 -07:00
|
|
|
return rustBackend.scanBlocks(dbCache: dbCache, dbData: dbData, networkType: Self.networkType)
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
|
2021-09-23 06:26:41 -07:00
|
|
|
static func createToAddress(
|
|
|
|
dbData: URL,
|
|
|
|
account: Int32,
|
|
|
|
extsk: String,
|
|
|
|
consensusBranchId: Int32,
|
|
|
|
to address: String,
|
|
|
|
value: Int64,
|
|
|
|
memo: String?,
|
|
|
|
spendParamsPath: String,
|
|
|
|
outputParamsPath: String,
|
|
|
|
networkType: NetworkType
|
|
|
|
) -> Int64 {
|
2021-04-02 15:18:16 -07:00
|
|
|
-1
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static func shouldSucceed(successRate: Float) -> Bool {
|
|
|
|
let random = Float.random(in: 0.0...1.0)
|
|
|
|
return random <= successRate
|
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func deriveExtendedFullViewingKey(_ spendingKey: String, networkType: NetworkType) throws -> String? {
|
2020-02-26 08:54:48 -08:00
|
|
|
nil
|
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func deriveExtendedFullViewingKeys(seed: String, accounts: Int32, networkType: NetworkType) throws -> [String]? {
|
2020-02-26 08:54:48 -08:00
|
|
|
nil
|
|
|
|
}
|
|
|
|
|
2021-07-28 09:59:10 -07:00
|
|
|
static func deriveExtendedSpendingKeys(seed: String, accounts: Int32, networkType: NetworkType) throws -> [String]? {
|
2020-02-26 08:54:48 -08:00
|
|
|
nil
|
|
|
|
}
|
|
|
|
|
2021-09-15 05:21:29 -07:00
|
|
|
static func decryptAndStoreTransaction(dbData: URL, txBytes: [UInt8], minedHeight: Int32, networkType: NetworkType) -> Bool {
|
2020-04-06 08:54:31 -07:00
|
|
|
false
|
|
|
|
}
|
2019-11-14 06:38:54 -08:00
|
|
|
}
|