Here is a little lesson on some issues with building a android wallet
Bitcoin wallet uses spv (simple payment verification)
a. bitcoinj is a java implementation of this
b. This allows multiple clients to Download header only files of the block chain.
Currently there is no implementation for pos coins to do this
a. The Blocks that are created threw pos and pow are different and this information is not stored in the block header.
1. Not sure how this works now that mint is pure pos
2. the app needs this information to work so this is a large bridge to cross
Hash engineering digitalcoin and digitalcoinj great repo to fork for wallet a. PROS
1. He implements multiple variables into one class for easy porting of the code
2. He has not implemented pos coins but he is very interested in the process.
b. Cons
1. currently pow only
2. Alot of coding required the cpp to be rewritten in java
AFAIK bitcoinj supports both SPV and being a complete node. It is the mobile wallet applications that choose to be SPV only so that they don't consume precious resources. This is enough to receive coins sent to your address, and you ignore the rest (This includes minted coins in the blockchain if they are minted from another computer, containing a copy of your wallet)
To mint new coins, you have to be able to generate blocks. I think you need the full contents of the last block and also you should have cached transactions that aren't yet in a block. Maybe enabling minting would require using the full fleshed library, redownloading the full blockchain, and maybe would be only possible on high end devices, I cannot tell yet. Currently I'm just looking from verification of broadcast blocks (PoW and PoS) perspective.
github fork of bitcoinj or digibytej
why not fork off hash engineering digitalcoinj he implements alot of stuff into once class for easier porting of coins
Actually I meant digitalcoinj. But I would explain "why not" below.
Yah he is to busy I was just saying he is interested in pos coins for android and his git repo seems like it is easy to fork for other coins why start straight from the bitcoinj because then we also have to figure our how to get the mbtc out. when he has already done most of the work as far as bringing most of the variables to one class like total coins genisis block block size blah blah blah
I don't think converting constants or finding variables would be hard. I too believe using dijitalcoinj has its advantages. I believe the most significant difference between using pure bitcoinj and using any other scrypt-enabled library would be converting PoW part from sha256 to scrypt. The other changes should be pure constants, just find them and replace them.
Now on the other side; my reasoning for wanting to base the library directly on bitcoinj instead of any other coin is because of security aspects and being always up-to-date. Altcoins have a small community compared to bitcoin itself. And main development will always occur on bitcoinj (for PoS, I hope main development will always occur on mintcoinj
). If we fork from another project which forks from bitcoinj, it means we have to trust the middleman to be always up to date with the latest developments on bitcoinj library. It would be hard to track changes that bitcoinj did and the middleman did not, and find them on bitcoinj and import them directly. If we fork directly from bitcoinj, I believe staying updated will be much easier.
I'm currently checking bitcoinj forks. Dogecoinj seems to be pretty close to bitcoinj, always receiving updates. If converting from sha256 to scrypt would seem hard, maybe an alternative active library may be the way to go.
(For the android UI itself, we can fork from any coin we like, they are built on the same bitcoinj spinoff libraries anyway, it would be pretty easy to convert them to use mintcoinj instead of xxcoinj as its backend)