Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
277 changes: 277 additions & 0 deletions .kotlin/errors/errors-1766412669424.log

Large diffs are not rendered by default.

163 changes: 163 additions & 0 deletions .kotlin/errors/errors-1766412670351.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
kotlin version: 2.1.10
error message: org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error: Couldn't transform method node:
toString ()Ljava/lang/String;:
@Lorg/jetbrains/annotations/NotNull;() // invisible
L0
NEW java/lang/StringBuilder
DUP
INVOKESPECIAL java/lang/StringBuilder.<init> ()V
LDC "TransactionSwapMetadata(depositAddress="
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 0
GETFIELD co/electriccoin/zcash/ui/common/repository/TransactionSwapMetadata.depositAddress : Ljava/lang/String;
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
LDC ", provider="
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 0
GETFIELD co/electriccoin/zcash/ui/common/repository/TransactionSwapMetadata.provider : Ljava/lang/String;
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
LDC ", totalFees="
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 0
GETFIELD co/electriccoin/zcash/ui/common/repository/TransactionSwapMetadata.totalFees : Lcash/z/ecc/android/sdk/model/Zatoshi;
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
LDC ", totalFeesUsd="
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 0
GETFIELD co/electriccoin/zcash/ui/common/repository/TransactionSwapMetadata.totalFeesUsd : Ljava/math/BigDecimal;
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
LDC ", lastUpdated="
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 0
GETFIELD co/electriccoin/zcash/ui/common/repository/TransactionSwapMetadata.lastUpdated : Ljava/time/Instant;
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
LDC ", origin="
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 0
GETFIELD co/electriccoin/zcash/ui/common/repository/TransactionSwapMetadata.origin : Lco/electriccoin/zcash/ui/common/model/SimpleSwapAsset;
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
LDC ", destination="
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 0
GETFIELD co/electriccoin/zcash/ui/common/repository/TransactionSwapMetadata.destination : Lco/electriccoin/zcash/ui/common/model/SimpleSwapAsset;
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
LDC ", mode="
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 0
GETFIELD co/electriccoin/zcash/ui/common/repository/TransactionSwapMetadata.mode : Lco/electriccoin/zcash/ui/common/model/SwapMode;
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
LDC ", status="
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 0
GETFIELD co/electriccoin/zcash/ui/common/repository/TransactionSwapMetadata.status : Lco/electriccoin/zcash/ui/common/model/SwapStatus;
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
LDC ", amountOutFormatted="
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 0
GETFIELD co/electriccoin/zcash/ui/common/repository/TransactionSwapMetadata.amountOutFormatted : Ljava/math/BigDecimal;
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
BIPUSH 41
INVOKEVIRTUAL java/lang/StringBuilder.append (C)Ljava/lang/StringBuilder;
INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
ARETURN
L1
NOP
L2
LOCALVARIABLE this Lco/electriccoin/zcash/ui/common/repository/TransactionSwapMetadata; L0 L2 0
MAXSTACK = 2
MAXLOCALS = 1

File is unknown
The root cause java.lang.OutOfMemoryError was thrown at: java.base/java.util.HashSet.<init>(HashSet.java:107)
at org.jetbrains.kotlin.codegen.TransformationMethodVisitor.visitEnd(TransformationMethodVisitor.kt:89)
at org.jetbrains.org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:783)
at org.jetbrains.org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:772)
at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generateMethod(ClassCodegen.kt:454)
at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generate(ClassCodegen.kt:169)
at org.jetbrains.kotlin.backend.jvm.FileCodegen.lower(JvmPhases.kt:39)
at org.jetbrains.kotlin.backend.common.phaser.PhaseFactoriesKt.createFilePhase$lambda$4(PhaseFactories.kt:71)
at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$createSimpleNamedCompilerPhase$1.phaseBody(PhaseBuilders.kt:69)
at org.jetbrains.kotlin.backend.common.phaser.SimpleNamedCompilerPhase.phaseBody(CompilerPhase.kt:226)
at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase.invoke(CompilerPhase.kt:113)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invokeSequential(performByIrFile.kt:52)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:42)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:28)
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.phaseBody(CompilerPhase.kt:166)
at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase.invoke(CompilerPhase.kt:113)
at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:27)
at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:14)
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.phaseBody(CompilerPhase.kt:166)
at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase.invoke(CompilerPhase.kt:113)
at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:62)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.invokeCodegen(JvmIrCodegenFactory.kt:371)
at org.jetbrains.kotlin.codegen.CodegenFactory.generateModule(CodegenFactory.kt:47)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.generateModuleInFrontendIRMode(JvmIrCodegenFactory.kt:433)
at org.jetbrains.kotlin.cli.jvm.compiler.pipeline.JvmCompilerPipelineKt.generateCodeFromIr(jvmCompilerPipeline.kt:192)
at org.jetbrains.kotlin.cli.jvm.compiler.pipeline.JvmCompilerPipelineKt.runBackend(jvmCompilerPipeline.kt:80)
at org.jetbrains.kotlin.cli.jvm.compiler.pipeline.JvmCompilerPipelineLightTreeKt.compileModule(jvmCompilerPipelineLightTree.kt:264)
at org.jetbrains.kotlin.cli.jvm.compiler.pipeline.JvmCompilerPipelineLightTreeKt.compileSingleModuleUsingFrontendIrAndLightTree(jvmCompilerPipelineLightTree.kt:231)
at org.jetbrains.kotlin.cli.jvm.compiler.pipeline.JvmCompilerPipelineLightTreeKt.compileModulesUsingFrontendIrAndLightTree(jvmCompilerPipelineLightTree.kt:86)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:146)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:43)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:102)
at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.kt:316)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:464)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:73)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.doCompile(IncrementalCompilerRunner.kt:506)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:423)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileNonIncrementally(IncrementalCompilerRunner.kt:301)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:129)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:683)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:91)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1811)
at jdk.internal.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.base/java.util.HashSet.<init>(HashSet.java:107)
at org.jetbrains.kotlin.codegen.optimization.temporaryVals.TemporaryVariablesEliminationTransformer.simplifyTrivialInstructions(TemporaryVariablesEliminationTransformer.kt:70)
at org.jetbrains.kotlin.codegen.optimization.temporaryVals.TemporaryVariablesEliminationTransformer.transform(TemporaryVariablesEliminationTransformer.kt:32)
at org.jetbrains.kotlin.codegen.optimization.transformer.CompositeMethodTransformer.transform(CompositeMethodTransformer.kt:25)
at org.jetbrains.kotlin.codegen.optimization.OptimizationMethodVisitor.performTransformations(OptimizationMethodVisitor.kt:74)
at org.jetbrains.kotlin.codegen.TransformationMethodVisitor.visitEnd(TransformationMethodVisitor.kt:67)
at org.jetbrains.org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:783)
at org.jetbrains.org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:772)
at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generateMethod(ClassCodegen.kt:454)
at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generate(ClassCodegen.kt:169)
at org.jetbrains.kotlin.backend.jvm.FileCodegen.lower(JvmPhases.kt:39)
at org.jetbrains.kotlin.backend.common.phaser.PhaseFactoriesKt.createFilePhase$lambda$4(PhaseFactories.kt:71)
at org.jetbrains.kotlin.backend.common.phaser.PhaseFactoriesKt$$Lambda$209/0x00007fe12814e898.invoke(Unknown Source)
at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$createSimpleNamedCompilerPhase$1.phaseBody(PhaseBuilders.kt:69)
at org.jetbrains.kotlin.backend.common.phaser.SimpleNamedCompilerPhase.phaseBody(CompilerPhase.kt:226)
at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase.invoke(CompilerPhase.kt:113)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invokeSequential(performByIrFile.kt:52)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:42)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:28)
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.phaseBody(CompilerPhase.kt:166)
at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase.invoke(CompilerPhase.kt:113)
at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:27)
at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:14)
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.phaseBody(CompilerPhase.kt:166)
at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase.invoke(CompilerPhase.kt:113)
at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:62)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.invokeCodegen(JvmIrCodegenFactory.kt:371)
at org.jetbrains.kotlin.codegen.CodegenFactory.generateModule(CodegenFactory.kt:47)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.generateModuleInFrontendIRMode(JvmIrCodegenFactory.kt:433)
at org.jetbrains.kotlin.cli.jvm.compiler.pipeline.JvmCompilerPipelineKt.generateCodeFromIr(jvmCompilerPipeline.kt:192)
at org.jetbrains.kotlin.cli.jvm.compiler.pipeline.JvmCompilerPipelineKt.runBackend(jvmCompilerPipeline.kt:80)
at org.jetbrains.kotlin.cli.jvm.compiler.pipeline.JvmCompilerPipelineLightTreeKt.compileModule(jvmCompilerPipelineLightTree.kt:264)


4 changes: 4 additions & 0 deletions .kotlin/errors/errors-1766412676639.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
kotlin version: 2.1.10
error message: java.lang.OutOfMemoryError: GC overhead limit exceeded


3 changes: 3 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,9 @@ android {
}

dependencies {
// implementation(files("libs/libwallet.aar"))
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))

implementation(libs.androidx.activity)
implementation(libs.androidx.annotation)
implementation(libs.androidx.core)
Expand Down
Binary file added app/libs/libwallet-sources.jar
Binary file not shown.
Binary file added app/libs/libwallet.aar
Binary file not shown.
213 changes: 213 additions & 0 deletions app/src/main/java/co/electriccoin/zcash/app/data/Types.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
/*
* Copyright (c) 2018-2021 The Decred developers
* Use of this source code is governed by an ISC
* license that can be found in the LICENSE file.
*/


package co.electriccoin.zcash.app.data

import co.electriccoin.zcash.app.util.WalletData
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
import com.google.gson.reflect.TypeToken
import libwallet.Libwallet
import java.io.Serializable

class Accounts : Serializable {

@SerializedName("CurrentBlockHash")
lateinit var currentBlockHash: String // base64

@SerializedName("CurrentBlockHeight")
var currentBlockHeight: Int = 0

@SerializedName("Acc")
lateinit var accounts: ArrayList<Account>
}

fun parseAccounts(json: String): Accounts {
val gson = Gson()
return gson.fromJson(json, Accounts::class.java)
}

class Account : Serializable {

private val wallet: Libwallet
get() = Libwallet.loadWallet("")

@SerializedName("WalletID")
var walletID: Long = 0

@SerializedName("Number")
var accountNumber: Int = 0

@SerializedName("Name")
lateinit var accountName: String

@SerializedName("Balance")
lateinit var balance: Balance

@SerializedName("TotalBalance")
var totalBalance: Long = 0

@SerializedName("ExternalKeyCount")
var externalKeyCount: Int = 0

@SerializedName("InternalKeyCount")
var internalKeyCount: Int = 0

@SerializedName("ImportedKeyCount")
var importedKeyCount: Int = 0

val hdPath: String
get() = wallet.hdPathForAccount(accountNumber)

val isMixerUnMixedAccount: Boolean
get() = accountNumber == wallet.unmixedAccountNumber()

val isMixerMixedAccount: Boolean
get() = accountNumber == wallet.mixedAccountNumber()

companion object {
fun from(acc: libwallet.Account): Account {
val account = Account()
return account.apply {
walletID = acc.walletID
accountNumber = acc.number
accountName = acc.name
balance = Balance.from(acc.balance)
totalBalance = acc.totalBalance
externalKeyCount = acc.externalKeyCount
internalKeyCount = acc.internalKeyCount
importedKeyCount = acc.importedKeyCount
}
}
}
}

fun parseAccountArray(json: String): ArrayList<Account> {
val gson = Gson()
val listType = object : TypeToken<ArrayList<Account>>() {}.type
return gson.fromJson(json, listType)
}

class Balance : Serializable {
@SerializedName("Spendable")
var spendable: Long = 0

@SerializedName("Total")
var total: Long = 0

@SerializedName("ImmatureReward")
var immatureReward: Long = 0

@SerializedName("ImmatureStakeGeneration")
var immatureStakeGeneration: Long = 0

@SerializedName("LockedByTickets")
var lockedByTickets: Long = 0

@SerializedName("VotingAuthority")
var votingAuthority: Long = 0

@SerializedName("UnConfirmed")
var unConfirmed: Long = 0

companion object {
fun from(bal: libwallet.Balance): Balance {
val balance = Balance()
return balance.apply {
spendable = bal.spendable
total = bal.total
immatureReward = bal.immatureReward
immatureStakeGeneration = bal.immatureStakeGeneration
lockedByTickets = bal.lockedByTickets
votingAuthority = bal.votingAuthority
unConfirmed = bal.unConfirmed
}
}
}
}

fun parseBalanceArray(json: String): ArrayList<Balance> {
val gson = Gson()
val listType = object : TypeToken<ArrayList<Balance>>() {}.type
return gson.fromJson(json, listType)
}

class DecredAddressURI {

var address: String = ""
var amount: Double? = null

companion object {
fun from(uriString: String): DecredAddressURI {

val addressURI = DecredAddressURI()

var address: String = uriString
var amount: Double? = null

val schemeSeparatedParts = uriString.split(":")
if (schemeSeparatedParts.size == 2 && schemeSeparatedParts[0] == "decred") {

val addressAndQuery = schemeSeparatedParts[1].split("?")

address = addressAndQuery[0]
if (addressAndQuery.size >= 2) {

// get amount from query
val queryParameters = addressAndQuery[1].split("&")
for (query in queryParameters) {
val nameValuePair = query.split("=")
val queryName = nameValuePair[0]
if (nameValuePair.size == 2 && queryName == Constants.AMOUNT) {
val amountStr = nameValuePair[1]
if (amountStr.trim().isNotEmpty()) {
try {
amount = amountStr.toDouble()
} catch (e: NumberFormatException) {
e.printStackTrace()
}
}

break
}
}
}
}

addressURI.address = address
addressURI.amount = amount

return addressURI
}
}
}

class PeerInfo {
@SerializedName("id")
var id: Int = 0

@SerializedName("addr")
lateinit var addr: String

@SerializedName("addr_local")
lateinit var addrLocal: String

@SerializedName("services")
lateinit var services: String

@SerializedName("version")
var version: Int = 0

@SerializedName("sub_ver")
lateinit var subVer: String

@SerializedName("starting_height")
var startingHeight: Long = 0

@SerializedName("ban_score")
var banScore: Int = 0
}
Loading