[DEV] Mobile Android and iPhone wallet app application Developments
-
Perfect! Thank you very much!
:)
-
Any iOS saavy developers out there? Coin Pocket a wallet for BTC hit thd AppStore yesterday. Here is the open source code:
https://github.com/enriquez/coinpocketapp.com -
I just started the Android and java stuff some weeks ago.
No experience with IOS, sorry
-
windows phone? Anybody can develop?
-
If you could that would be epic ahy!
-
Are there any changes to the android wallet Needes to deal with NeoScrypt?
Or maybe it’s in FeathercoinJ?
-
Yes, the android wallet needs to be adapted for neoscrypt.
Any help is highly appreciated.
Volunteers please contact me via pm
-
Excellent guys.
Keeping the android wallet up to date and running should be one of the priorities for the algo change.
-
The Android wallet still is not prepared for the Neoscrypt fork.
As the date for the move to Neoscrypt comes closer, we need to implement the Neoscrypt module in the Android wallet or it will not work anymore after the fork.
Are there any coders willing to help?
reply here or send me a PM
-
I’ll put up 0.5btc for the job.
And if you do something really stellar with the wallet I’ll double it depending on what extra you’ve put in.
-
I think what really needs sorting is the feathercoinj project which is the part that talks to the Feathercoin network. The wallet would then just need to include the new version of that to work.
But it could be quite a job? I am willing to help any way I can but its taking out the scrypt algo and including the NeoScrypt one or writing a Java implementation. -
As far as I found there are a couple of steps to do:
- create a neoscrypt module as it already exist for scrypt. It should be a c-compiled librady for android. The existing scryp module tries to load the library and if that fails it executes the scrypt function in java. the java object is: com.lambdaworks.crypto.SCrypt the link to the existing scrypt module on guthub is: https://github.com/wg/scrypt/blob/master/src/main/java/com/lambdaworks/crypto/SCrypt.java May be that gives an idea what needs to be done.
- modify the file block.java in feathercoinj to execute scrypt hashing for blocks < 432,000 and neoscrypt hashing starting at the 432,000
- modify tests I’m not sure, if step 3 is really needed. I hope I got the major steps I will grant access to the feathercoinj repo on github so we can work together.
-
I spent an hour or two last night banging my head against a wall trying to get feathercoinj compiled in ecplise. (without any code changes)
I got the code from Hanks Github (Is this the correct repo?) and attempted to build it as a maven project but there seems to be alot of missing dependencies which mean it wont compile.
I tried manually adding some of the dependences but without much luck. Also the tests wont compile because of some odd issue with the test params.
So I canned it for now I will try again tonight if I get a chance.
It really should not be this hard lol
…EDIT: Looks like the project was setup in intellij originally so I may install that tonight when I try.
As it may well work out of the box with that IDE.
-
I used Android studio to compile and feathercoinj from here:
https://github.com/wellenreiter01/feathercoinj
Feathercoin-Wallet for android is here in case you need it:
https://github.com/wellenreiter01/feathercoin-wallet-2
the test section is broken, so I compiled without-test
But I agree, setup and compile the first time is a pain… :-
-
Thanks for the pointers.
I’ll give that a shot!
:) -
OK Im compiled and im starting to look at what has to be done. Its quite a task. :)
Right in Block.java I have identified one placewe need to check the block number to either hash with scrypt ot neoscrypt.
it is in checkProofOfWork() (around line 600 or so) as at the moment it is always calling these methods
getScryptHash() and getScryptHashAsString()
rather than my new methods (cunningly named I think)
getNeoScryptHash() and getNeoScryptHashAsString() (genious lol)
So What I need is a way of either checking what the number of this block is or what the previous block is and all I can see is a hash of the pervious block? Any Ideas ?
-
Check wallet.java, line 1181.
The block object has a procedure ‘getHeight’ :)
Based on the height, you could add a flag to the call of checkProofOfWork() forcoing it to use getScryptHash() or getNeoScryptHash()
-
Perfect thanks wellenreiter :)
-
I used Android studio to compile and feathercoinj from here:
https://github.com/wellenreiter01/feathercoinj
Feathercoin-Wallet for android is here in case you need it:
https://github.com/wellenreiter01/feathercoin-wallet-2
the test section is broken, so I compiled without-test
But I agree, setup and compile the first time is a pain… :-
I have a problem for compile feathercoinj :
D:\FTC\andriod\feathercoinj-master>mvn clean package
[INFO] Scanning for projects…
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR] The project com.google:feathercoinj-tools:[unknown-version] (D:\FTC\andriod\feathercoinj-master\tools\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Could not find artifact com.google:feathercoinj-parent:pom:0.96-SNAPSHOT and ‘parent.relativePath’ points at wrong local
POM @ line 21, column 11 -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException -
I still can complie it with eclipse include JNI code, but wallet.apk can not work after I install it. I don’t know any miss, Jar is a mess and It is frustrating. I think create a new project with eclipse 3.7.2, maven is a shit .
Android Runtime Info:
04-02 14:32:39.386: D/dalvikvm(618): Trying to load lib /data/data/com.feathercoin.wallet/lib/libneoscrypt.so 0x411eb378 04-02 14:32:39.386: D/dalvikvm(618): Added shared lib /data/data/com.feathercoin.wallet/lib/libneoscrypt.so 0x411eb378 04-02 14:32:39.386: D/dalvikvm(618): No JNI_OnLoad found in /data/data/com.feathercoin.wallet/lib/libneoscrypt.so 0x411eb378, skipping init 04-02 14:32:39.436: W/hasher(618): output: 04-02 14:32:39.606: D/dalvikvm(618): GC_CONCURRENT freed 217K, 7% free 10869K/11591K, paused 19ms+31ms, total 137ms 04-02 14:32:39.656: E/AbstractBlockChain(618): Failed to verify block: 04-02 14:32:39.656: E/AbstractBlockChain(618): com.google.feathercoin.core.VerificationException: Hash is higher than target: 2de0ecb2b7daa24fb9ef64fe0934508481bd14cf421c9d90f7b8e160a322850a vs ffff0000000000000000000000000000000000000000000000000000000 04-02 14:32:39.656: E/AbstractBlockChain(618): at com.google.feathercoin.core.Block.checkProofOfWork(Block.java:627) 04-02 14:32:39.656: E/AbstractBlockChain(618): at com.google.feathercoin.core.Block.verifyHeader(Block.java:748) 04-02 14:32:39.656: E/AbstractBlockChain(618): at com.google.feathercoin.core.AbstractBlockChain.add(AbstractBlockChain.java:405) 04-02 14:32:39.656: E/AbstractBlockChain(618): at com.google.feathercoin.core.AbstractBlockChain.add(AbstractBlockChain.java:289) 04-02 14:32:39.656: E/AbstractBlockChain(618): at com.google.feathercoin.core.Peer.processHeaders(Peer.java:365) 04-02 14:32:39.656: E/AbstractBlockChain(618): at com.google.feathercoin.core.Peer.processMessage(Peer.java:244) 04-02 14:32:39.656: E/AbstractBlockChain(618): at com.google.feathercoin.core.Peer.access$5(Peer.java:208) 04-02 14:32:39.656: E/AbstractBlockChain(618): at com.google.feathercoin.core.Peer$PeerHandler.messageReceived(Peer.java:1342) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:88) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:787) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:536) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:485) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:555) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:107) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:88) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 04-02 14:32:39.656: E/AbstractBlockChain(618): at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) 04-02 14:32:39.656: E/AbstractBlockChain(618): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 04-02 14:32:39.656: E/AbstractBlockChain(618): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 04-02 14:32:39.656: E/AbstractBlockChain(618): at java.lang.Thread.run(Thread.java:856) 04-02 14:32:39.667: E/AbstractBlockChain(618): fdbe99b90c90bae7505796461471d89ae8388ab953997aa06a355bbda8d915cb 04-02 14:32:39.756: W/Peer(618): Block header verification failed 04-02 14:32:39.756: W/Peer(618): com.google.feathercoin.core.VerificationException: Could not verify block fdbe99b90c90bae7505796461471d89ae8388ab953997aa06a355bbda8d915cb 04-02 14:32:39.756: W/Peer(618): v1 block: 04-02 14:32:39.756: W/Peer(618): previous block: 12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2 04-02 14:32:39.756: W/Peer(618): merkle root: 808267d4d2e63c1098b4caa198eebd8096b912164efa0afeb8fdee31d726a925 04-02 14:32:39.756: W/Peer(618): time: [1366147060] Tue Apr 16 21:17:40 GMT 2013 04-02 14:32:39.756: W/Peer(618): difficulty target (nBits): 504365040 04-02 14:32:39.756: W/Peer(618): nonce: 3863023104 04-02 14:32:39.756: W/Peer(618): at com.google.feathercoin.core.AbstractBlockChain.add(AbstractBlockChain.java:299) 04-02 14:32:39.756: W/Peer(618): at com.google.feathercoin.core.Peer.processHeaders(Peer.java:365) 04-02 14:32:39.756: W/Peer(618): at com.google.feathercoin.core.Peer.processMessage(Peer.java:244) 04-02 14:32:39.756: W/Peer(618): at com.google.feathercoin.core.Peer.access$5(Peer.java:208) 04-02 14:32:39.756: W/Peer(618): at com.google.feathercoin.core.Peer$PeerHandler.messageReceived(Peer.java:1342) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:88) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:787) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:536) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:485) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:555) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:107) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:88) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 04-02 14:32:39.756: W/Peer(618): at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) 04-02 14:32:39.756: W/Peer(618): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 04-02 14:32:39.756: W/Peer(618): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 04-02 14:32:39.756: W/Peer(618): at java.lang.Thread.run(Thread.java:856) 04-02 14:32:39.756: W/Peer(618): Caused by: com.google.feathercoin.core.VerificationException: Hash is higher than target: 2de0ecb2b7daa24fb9ef64fe0934508481bd14cf421c9d90f7b8e160a322850a vs ffff0000000000000000000000000000000000000000000000000000000 04-02 14:32:39.756: W/Peer(618): at com.google.feathercoin.core.Block.checkProofOfWork(Block.java:627) 04-02 14:32:39.756: W/Peer(618): at com.google.feathercoin.core.Block.verifyHeader(Block.java:748) 04-02 14:32:39.756: W/Peer(618): at com.google.feathercoin.core.AbstractBlockChain.add(AbstractBlockChain.java:405) 04-02 14:32:39.756: W/Peer(618): at com.google.feathercoin.core.AbstractBlockChain.add(AbstractBlockChain.java:289) 04-02 14:32:39.756: W/Peer(618): ... 26 more 04-02 14:33:01.636: W/hasher(618): output: 04-02 14:33:01.826: W/AbstractBlockChain(618): Block does not connect: 942650fccdbc157c05aab9f03e258b8dfe96c25997fa578aaa5904ab64c9d99a prev 79a0d95baf57d91f5d1e99ef2a01ce06b69b62849640b54208be2255ec50dbb1 04-02 14:33:01.826: I/Peer(618): Did not start chain download on solved block due to in-flight header download. 04-02 14:33:12.566: W/hasher(618): output: 04-02 14:33:12.716: W/AbstractBlockChain(618): Block does not connect: 62d7ba0eb0e9006e6e1f6de9652110ec1e3f941089be3af05aec31603da7eeb4 prev 942650fccdbc157c05aab9f03e258b8dfe96c25997fa578aaa5904ab64c9d99a 04-02 14:33:12.726: I/Peer(618): Did not start chain download on solved block due to in-flight header download.