Jan (OP)
Legendary
Offline
Activity: 1043
Merit: 1002
|
|
November 24, 2011, 01:49:32 PM |
|
Very nice! What technology was used to create this? Is it something very specific to Android or would it be easy to port to the iPhone (and run on a jailbroken iPhone)?
BitcoinSpinner is written in Java, and uses the BCCAPI which is also written in Java. To implement this for iPhone you would have to port the BCCAPI to C/C++ish languages, and implement the UI on top from scratch. This is not a big pile of work, but would take a seasoned developer some weeks. This big problem however is, as you indicate, that this would only be useable for jailbroken devices. So you would never hit the mass market. I don't really care about the mass markets, I care about me. What I really want is a native app built using phonegap, HTML5 & JavaScript such that it's maximally portable. Also, eventually Apple will allow these apps, especially when everyone is jailbreaking their phones to install them. I haven't looked into phonegap, but I agree that HTML5 & JavaScript (or Dart) is the way to go, however I see two obstacles: 1. You are downloading the app on each use -> you have to trust the site you download it from. 2. You need access to the camera to scan QR codes, and I don't think this is possible on an iPhone
|
Mycelium let's you hold your private keys private.
|
|
|
Steve
|
|
November 24, 2011, 02:00:42 PM |
|
Very nice! What technology was used to create this? Is it something very specific to Android or would it be easy to port to the iPhone (and run on a jailbroken iPhone)?
BitcoinSpinner is written in Java, and uses the BCCAPI which is also written in Java. To implement this for iPhone you would have to port the BCCAPI to C/C++ish languages, and implement the UI on top from scratch. This is not a big pile of work, but would take a seasoned developer some weeks. This big problem however is, as you indicate, that this would only be useable for jailbroken devices. So you would never hit the mass market. I don't really care about the mass markets, I care about me. What I really want is a native app built using phonegap, HTML5 & JavaScript such that it's maximally portable. Also, eventually Apple will allow these apps, especially when everyone is jailbreaking their phones to install them. I haven't looked into phonegap, but I agree that HTML5 & JavaScript (or Dart) is the way to go, however I see two obstacles: 1. You are downloading the app on each use -> you have to trust the site you download it from. 2. You need access to the camera to scan QR codes, and I don't think this is possible on an iPhone This is the reason for phonegap…it gives you access to things like the camera across all the devices it supports. All the HTML&JavaScript are embedded in the app you download (not loaded from a server every time…although you could also do it that way). And, since it is just HTML5+JavaScript, you could easily make a version that works with any web browser on any device (phone, tablet, laptop or otherwise). You could bundle it as a downloadable app or deliver it from a website (but as you say, you have to trust the website every time you use the app instead of just once on download…although I've seen some proposals to deal with that as well (i.e. side loading the critical key handling code).
|
|
|
|
westkybitcoins
Legendary
Offline
Activity: 980
Merit: 1004
Firstbits: Compromised. Thanks, Android!
|
|
November 24, 2011, 03:05:03 PM |
|
I've downloaded it and am trying it out now.
As a minimalist interface, it looks pretty good. There's not much extra going on anywhere in the app to seriously confuse people.
I sent coins to the app, and it correctly showed the amount "on their way". I had intended to keep it open to see if it automatically let me know when the transaction was confirmed, but got distracted and re-opened the app to see the coins in-hand, so to speak.
All in all, this looks like an excellent, wonderfully simple app that should be great for mass market use.
|
Bitcoin is the ultimate freedom test. It tells you who is giving lip service and who genuinely believes in it.
... ... In the future, books that summarize the history of money will have a line that says, “and then came bitcoin.” It is the economic singularity. And we are living in it now. - Ryan Dickherber... ... ATTENTION BFL MINING NEWBS: Just got your Jalapenos in? Wondering how to get the most value for the least hassle? Give BitMinter a try! It's a smaller pool with a fair & low-fee payment method, lots of statistical feedback, and it's easier than EasyMiner! (Yes, we want your hashing power, but seriously, it IS the easiest pool to use! Sign up in seconds to try it!)... ... The idea that deflation causes hoarding (to any problematic degree) is a lie used to justify theft of value from your savings.
|
|
|
Tuxavant
|
|
November 24, 2011, 03:24:39 PM |
|
Just installed... This is the simple type of app I love. I will write it up at BitcoinIntro.com!
|
|
|
|
btc_artist
Full Member
Offline
Activity: 154
Merit: 102
Bitcoin!
|
|
November 24, 2011, 03:29:30 PM |
|
Excellent!
|
BTC: 1CDCLDBHbAzHyYUkk1wYHPYmrtDZNhk8zf LTC: LMS7SqZJnqzxo76iDSEua33WCyYZdjaQoE
|
|
|
blueadept
|
|
November 24, 2011, 07:11:42 PM |
|
Thanks for the feedback. Regarding the fee: This is a limitation of the server implementation and not the App as such, or in other words my fault. You are right that you can deduce the minimal fee, which is some cases is zero, by among others looking at the age of your inputs. Etotheipi started a thread on this here: https://bitcointalk.org/index.php?topic=51081.0For now I have chosen a conservative approach where the fee is 0.0005 * (1+int(transactionSizeinBytes/1000)). I will be looking into optimizing this going forward. The paramount thing to note here is that it is critical that the fee calculation is not too low, as you may risk the transaction is not propagated through the network or accepted by a miner. In scenarios where you manage your own block chain and end up with a transaction that got stuck you can basically delete the block chain, keep your wallet keys and load it anew, and finally make a new transaction with a larger fee. With the BCCAPI I cannot do this as I don't have a separate block chain per wallet, and don't want to spend the processing power to scan it anew whenever some poor guy sent out a transaction with a zero fee. In the end I would like this to be simple and safe to use. This makes sense and I'm glad that you're going the conservative route instead of just letting the user specify a 0 fee. By the way, looking through the code for the BCCAPI, it looks like it's pretty easy to just instantiate it and point it to another server, which means someone with an Electrum or NodeJS server could fairly easily set up a BCCAPI-compatible web API as well and run a service which competes with yours. This is probably a good thing, though this particular app doesn't let you choose the URL(s) to which it connects. No address book: This feature is an App feature and independent of the BCCAPI. It may be a good thing to add to the App going forward, but I guess that it depends on the use-case. If we want it to look like your ordinary wallet, then you do not have an address book or a transaction log for that matter. Whenever you pay you grab the money and pass it on to whoever you are trading with. However, the reason why I don't have an address book and transaction log for my ordinary wallet is that the first doesn't make sense and the latter is very cumbersome to manage. With a Bitcoin wallet this is both feasible and practically manageable. As for the transaction list the BCCAPI already has this functionality. It just needs to go into the App. I'll pass this onto the developer at Miracle and see what he thinks.
In the end the goal with the App is to be simple and easy for anyone to absorb, so maybe transaction logs and address books is something that could go into a Pro version?
I realize it's a feature of the app, but I figured I would put it up there as this thread is dedicated to the app, not just the BCCAPI. I don't think either an address book OR transaction log is absolutely necessary for the use case of an "in-person" wallet (though having both would certainly help you keep track of spending), and it's very easy to use as it is. Really, it's an amazing piece of software and I've already told a lot of my bitcoin-curious friends about it. Thank you for all the work you've done on the BCCAPI and helping create this new generation of low-footprint mobile wallets. By the way, I did a little bit of research on MIracle and it looks like they have a brewery, too! I'm going to see what I can do about getting my hands on some of their beers.
|
|
|
|
Ferroh
Member
Offline
Activity: 111
Merit: 100
|
|
November 25, 2011, 10:09:53 AM |
|
I don't really care about the mass markets, I care about me. What I really want is a native app built using phonegap, HTML5 & JavaScript such that it's maximally portable. Also, eventually Apple will allow these apps, especially when everyone is jailbreaking their phones to install them. This already exists essentially (webcoin) see here: http://bitcoinjs.org/This is not what is needed on Android if you are interested in mass adoption. You might only care about you, as you say, but I care about Bitcoin as a widely adopted tech -- and people like to download apps from the market/app store. So webcoin might be a good intermediate step for the iPhone, but on Android this app is a step forward. I just tried this app, and so far, it's awesome! Just what was needed. (Although the color scheme and/or UI look is not my favorite.)
|
|
|
|
Jan (OP)
Legendary
Offline
Activity: 1043
Merit: 1002
|
|
November 25, 2011, 01:58:02 PM |
|
... This makes sense and I'm glad that you're going the conservative route instead of just letting the user specify a 0 fee. By the way, looking through the code for the BCCAPI, it looks like it's pretty easy to just instantiate it and point it to another server, which means someone with an Electrum or NodeJS server could fairly easily set up a BCCAPI-compatible web API as well and run a service which competes with yours. This is probably a good thing, though this particular app doesn't let you choose the URL(s) to which it connects.
Competition is a good thing. So far everything is provided for absolutely free, and that is hard to compete with Going forward I am hoping that this service can continue to run on donations. The total donation income for the BCCAPI is roughly a stunning 2 BTC, and my expenses for the servers at Rackspace alone are 50$ a month. ... By the way, I did a little bit of research on MIracle and it looks like they have a brewery, too! I'm going to see what I can do about getting my hands on some of their beers.
Yummy. Maybe they accept Bitcoin
|
Mycelium let's you hold your private keys private.
|
|
|
dunand
|
|
November 26, 2011, 05:02:41 AM |
|
I'm testing BitcoinSpinner right now. If I understand correctly, when I want to backup the wallet I need to export the QR code and keep it in a safe place because it contains my private keys unencrypted.
I would like to know if it's possible to generate the wallet from a seed like you do in the SimpleClient that comes with BCCAPI. I really likes this feature because there is no need to backup the wallet, you just need to remember the passphrase.
BCCAPI is amazing. Keep the good work!
|
|
|
|
Jan (OP)
Legendary
Offline
Activity: 1043
Merit: 1002
|
|
November 26, 2011, 05:01:06 PM |
|
Thank you community for all the support. Help pushing this app forward by - Rating it on the Android Market. A rating is good, some words even better.
- Offering translations to other languages, by going to http://code.google.com/p/bitcoinspinner/ and contacting the authors. I just heard from Mats Henricson, who offered to make a Swedish transaltion.
- Help us getting even better usability by suggesting feature improvements, a better color schemes, nicer icons, or even coin-sounds when Bitcoins tick in.
- Check out the code and submit patches
I just tried this app, and so far, it's awesome! Just what was needed. (Although the color scheme and/or UI look is not my favorite.)
Thanks. One way of improving this could be to grab the screenshots, fix them up to your liking in photoshop, and send them to the authors. I'm testing BitcoinSpinner right now. If I understand correctly, when I want to backup the wallet I need to export the QR code and keep it in a safe place because it contains my private keys unencrypted.
I would like to know if it's possible to generate the wallet from a seed like you do in the SimpleClient that comes with BCCAPI. I really likes this feature because there is no need to backup the wallet, you just need to remember the passphrase.
BCCAPI is amazing. Keep the good work!
Thanks. BitcoinSpinner generates the random seed when it is first started, so it doesn't use the "generate seed from passphrase" feature which is available in the BCCAPI. The backup QR code contains the seed that the private key is generated from, so yes, you should print it out on paper and keep in a safe location. A forum member is working on a different android client based on the BCCAPI where you use a passphrase + salt for generating the seed, just like the SimpleClient. However I am not sure how close this client is for a beta release. Since he is a member of this forum I'll let him decide when he is ready to announce it.
|
Mycelium let's you hold your private keys private.
|
|
|
Dusty
|
|
November 27, 2011, 06:38:11 PM |
|
GREAT work, thanks!
|
|
|
|
slush
Legendary
Offline
Activity: 1386
Merit: 1097
|
|
November 27, 2011, 06:55:37 PM |
|
Hello, I'm working on another alternative client Electrum, which has basically same goals like your implementation, but for desktop client (at this moment). I like your job, except this: Simply put the BCCAPI (Bit Coin Client API) allows you to create a light-weight secure Bitcoin client in Java.
Is there any reason why to use some Java-specific protocol? I'm solving "ideal way how to do universal network layer" right now and thinking about some universal "Bitcoin client API" too, but I prefer platform independent protocol. I didn't found any format specification on BCCAPI (is there any?) and I'm too lazy to read Java sources (because I'm not a Java developer), but do you think there's some room for cooperation on making this protocol more universal, not Java-oriented?
|
|
|
|
Findeton
|
|
November 27, 2011, 08:51:30 PM |
|
The problem is you still have to wait to check if the transaction actually took place.
|
|
|
|
Jan (OP)
Legendary
Offline
Activity: 1043
Merit: 1002
|
|
November 28, 2011, 08:53:10 AM |
|
Hello, I'm working on another alternative client Electrum, which has basically same goals like your implementation, but for desktop client (at this moment). I like your job, except this: Simply put the BCCAPI (Bit Coin Client API) allows you to create a light-weight secure Bitcoin client in Java.
Is there any reason why to use some Java-specific protocol? I'm solving "ideal way how to do universal network layer" right now and thinking about some universal "Bitcoin client API" too, but I prefer platform independent protocol. I didn't found any format specification on BCCAPI (is there any?) and I'm too lazy to read Java sources (because I'm not a Java developer), but do you think there's some room for cooperation on making this protocol more universal, not Java-oriented? Interesting. Java is a programming language, not a protocol. The wire protocol is REST-like HTTP(S), and nothing prevents you from calling the server side from python. The raw API has 7 functions and is well documented with the Java interface declaration: http://code.google.com/p/bccapi/source/browse/trunk/src/com/bccapi/api/BitcoinClientAPI.javaThe implementation of the interface is 200 lines of easy-to-read Java code and available here: http://code.google.com/p/bccapi/source/browse/trunk/src/com/bccapi/core/BitcoinClientApiImpl.javaApart from this there is a bunch of Java classes for transactions and utilities that make it really easy to implement a UI on top of it.
|
Mycelium let's you hold your private keys private.
|
|
|
Jan (OP)
Legendary
Offline
Activity: 1043
Merit: 1002
|
|
November 28, 2011, 08:55:01 AM |
|
The problem is you still have to wait to check if the transaction actually took place.
I am not sure what problem you are referring to. Please elaborate.
|
Mycelium let's you hold your private keys private.
|
|
|
Mike Hearn
Legendary
Offline
Activity: 1526
Merit: 1134
|
|
November 28, 2011, 09:34:51 AM |
|
Congrats! Looks great, I will try it out in a bit.
Re: BitCoinJ and mobile. I fully agree that currently the BCCAPI/Electrum/server side approach gives better performance. I hope we can close that gap over time such that specialized servers are no longer necessary. For instance, using "getheaders" to catch up to the chain head for new users should give dramatically better first-start performance on mobiles, and it's a relatively simple change. That said, offloading everything to the server will probably have better performance and battery usage characteristics for the forseeable future.
|
|
|
|
Jan (OP)
Legendary
Offline
Activity: 1043
Merit: 1002
|
|
November 30, 2011, 07:36:35 PM |
|
Thanks for all the feedback so far. In the meantime a French and Swedish translation has been added by members of the community. Check out the topic on BitcoinSpinner in the Alternative Clients section, and let's continue there: https://bitcointalk.org/index.php?topic=53353.0
|
Mycelium let's you hold your private keys private.
|
|
|
Jaagu
Member
Offline
Activity: 62
Merit: 10
|
|
December 01, 2011, 11:39:06 AM |
|
The problem is you still have to wait to check if the transaction actually took place.
I am not sure what problem you are referring to. Please elaborate. Maybe Findeton refers to a problem of sending couple transactions in quick succession? One needs to wait for each transaction to be picked up in a block then retrieve the TX outs again from server-side blockchain?
|
|
|
|
westkybitcoins
Legendary
Offline
Activity: 980
Merit: 1004
Firstbits: Compromised. Thanks, Android!
|
|
December 01, 2011, 04:29:11 PM |
|
The problem is you still have to wait to check if the transaction actually took place.
I am not sure what problem you are referring to. Please elaborate. Maybe Findeton refers to a problem of sending couple transactions in quick succession? One needs to wait for each transaction to be picked up in a block then retrieve the TX outs again from server-side blockchain? Yeah, that is a problem with only having one private key. I tripped up on this with StrongCoin too (although a workaround was implemented of allowing a spend to multiple addresses--this makes the problem much less severe.) Allowing multiple spends at once will help BitcoinSpinner too, but considering the simple design, it should probably be something the user has to ask for specifically. Also... while a little confusing at first, it might help to list the change itself as also being "coins on the way" ("change on the way?"), with the balance of the mini-wallet being 0.00 for a while after a spend.
|
Bitcoin is the ultimate freedom test. It tells you who is giving lip service and who genuinely believes in it.
... ... In the future, books that summarize the history of money will have a line that says, “and then came bitcoin.” It is the economic singularity. And we are living in it now. - Ryan Dickherber... ... ATTENTION BFL MINING NEWBS: Just got your Jalapenos in? Wondering how to get the most value for the least hassle? Give BitMinter a try! It's a smaller pool with a fair & low-fee payment method, lots of statistical feedback, and it's easier than EasyMiner! (Yes, we want your hashing power, but seriously, it IS the easiest pool to use! Sign up in seconds to try it!)... ... The idea that deflation causes hoarding (to any problematic degree) is a lie used to justify theft of value from your savings.
|
|
|
Jan (OP)
Legendary
Offline
Activity: 1043
Merit: 1002
|
|
December 01, 2011, 05:03:39 PM |
|
The problem is you still have to wait to check if the transaction actually took place.
I am not sure what problem you are referring to. Please elaborate. Maybe Findeton refers to a problem of sending couple transactions in quick succession? One needs to wait for each transaction to be picked up in a block then retrieve the TX outs again from server-side blockchain? Yeah, that is a problem with only having one private key. I tripped up on this with StrongCoin too (although a workaround was implemented of allowing a spend to multiple addresses--this makes the problem much less severe.) Allowing multiple spends at once will help BitcoinSpinner too, but considering the simple design, it should probably be something the user has to ask for specifically. Also... while a little confusing at first, it might help to list the change itself as also being "coins on the way" ("change on the way?"), with the balance of the mini-wallet being 0.00 for a while after a spend. StrongCoin and other alternative clients may have a limitation with change sent back to yourself. With BitcoinSpinner the change sent back to yourself is available for spending immediately, and you don't have to wait for a confirmation. In that regard BitcoinSpinner works like the Satoshi client. You can do a simple test with BitcoinSpinner where you: 1. Have zero balance in BitcoinSpinner 2. Send 2 bitcoins to BitcoinSpinner in a single transaction 3. Send 0.9995 BTC to another client two times right after each other with no intermediate confirmations. 4. Wait for the funds to arrive in the other client.
|
Mycelium let's you hold your private keys private.
|
|
|
|