Bitcoin Forum
April 20, 2024, 02:15:50 AM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Bitcoin Pouch: A Community Driven Bitcoin Service (w/ JS-Remote!)  (Read 2128 times)
ryepdx (OP)
Hero Member
*****
Offline Offline

Activity: 714
Merit: 500


View Profile
April 27, 2011, 09:31:00 AM
Last edit: April 27, 2011, 11:55:21 PM by ryepdx
 #1

Hey guys, I've finished the project I've been working on! Well, the first part anyway.

Bitcoin Pouch is meant to be an open-source, community driven financial service similar to My Bitcoin. I'm hoping to run it under a model of governance that will ensure direct accountability to the website's users and complete openness of process. I want this to be community-owned and run. I started this project because I felt like something like this could be a great boon for the Bitcoin community.

There remains a lot to be done, but for now it's ready to be tested. I've got it up and running alongside a bitcoin daemon on testnet. Could you all go kick the tires a bit and let me know if you find any bugs or vulnerabilities, or if you have any suggestions for new features? (Note that while the website remains in alpha testing, any accounts you create there may end up getting deleted at some point before the full production launch.)

URL: https://bitcoinpouch.com/
Source: https://github.com/ryepdx/bitcoin-pouch

Let me know what you think.

Thanks!

Edit:
An important note I forgot: Bitcoin Pouch provides a JSON-RPC interface similar to the one the bitcoin client provides. An interactive client and method list is available once you've logged in to Bitcoin Pouch at https://bitcoinpouch.com/api/bitcoind/browse. The interface itself resides at https://bitcoinpouch.com/api/bitcoind/. At present it's not working with cross-domain calls. You can verify this by entering the interface's URL and your Bitcoin Pouch login information in the js-remote demo at http://bitcoincharts.com/js-remote/. If anyone wants to help with the project, that would be a great place to start.
The trust scores you see are subjective; they will change depending on who you have in your trust list.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1713579350
Hero Member
*
Offline Offline

Posts: 1713579350

View Profile Personal Message (Offline)

Ignore
1713579350
Reply with quote  #2

1713579350
Report to moderator
jav
Sr. Member
****
Offline Offline

Activity: 249
Merit: 251


View Profile
April 27, 2011, 11:15:20 AM
 #2

Interesting project! Can you elaborate on the JSON-RPC interface you provide? This runs on a single Bitcoin wallet but isolates different Bitcoin Pouch accounts from each other? How exactly do you achieve that?

Hive, a beautiful wallet with an app platform for Mac OS X, Android and Mobile Web. Translators wanted! iOS and OS X devs see BitcoinKit. Tweets @hivewallet. Donations appreciated at 1HLRg9C1GsfEVH555hgcjzDeas14jen2Cn.
ryepdx (OP)
Hero Member
*****
Offline Offline

Activity: 714
Merit: 500


View Profile
April 27, 2011, 05:22:19 PM
Last edit: April 28, 2011, 08:36:57 AM by ryepdx
 #3

Interesting project!

Thanks!

Quote
Can you elaborate on the JSON-RPC interface you provide? This runs on a single Bitcoin wallet but isolates different Bitcoin Pouch accounts from each other? How exactly do you achieve that?

Basically the interface works as a proxy to bitcoind's JSON-RPC interface. Every address created by a user is associated with that user's account and stored in a MySQL database. Also, every address created is given a label: the user's username if they don't specify a label, or a label in the format of "username:label" "username+label" if they do. Before the interface returns any information on a user's own account, it strips the user's username and the extra colon addition symbol. This works because colons addition symbols are not allowed in a user's username. Any calls to aggregate accounts (such as "getbalance" with parameters omitted) is handled by retrieving all the user's addresses from the MySQL database, making the appropriate call to the bitcoind server on each account, and then folding the results together.

The upswing of this naming scheme, aside from keeping accounts effectively separated, is that bitcoins can be sent from user to user on Bitcoin Pouch using only the user's username, or their username and a label if you want the coins to go to a specific account. For example, say I have an address which I've assigned the label of "donations." If you wanted to send bitcoins to that particular address via Bitcoin Pouch, you could simply specify "ryepdx:donations" "ryepdx+donations" instead of the full bitcoin address.

Edit:
Changed references to colons into addition symbols instead. Colons were used in a previous version of the code, which led to my confusion.
kiba
Legendary
*
Offline Offline

Activity: 980
Merit: 1014


View Profile
April 27, 2011, 06:32:01 PM
 #4

Crashed it at signup:

Code:
Warning at /account/signup/
Table './pouch/emailconfirmation_emailconfirmation' is marked as crashed and should be repairedRequest Method: POST
Request URL: https://bitcoinpouch.com/account/signup/
Exception Type: Warning
Exception Value: Table './pouch/emailconfirmation_emailconfirmation' is marked as crashed and should be repaired
Exception Location: /usr/lib/pymodules/python2.6/MySQLdb/cursors.py in _warning_check, line 82
Python Executable: /usr/bin/python
Python Version: 2.6.6
Python Path: ['/home/pouch/pouch/apps', '/home/pouch/env/lib/python2.6/site-packages/pinax/apps', '/home/pouch/env/lib/python2.6/site-packages/', '/home/pouch/pouch', '/home/pouch', '/home/pouch/env/lib/python2.5/site-packages', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/pymodules/python2.6']
Server time: Wed, 27 Apr 2011 14:30:39 -0400

kiba
Legendary
*
Offline Offline

Activity: 980
Merit: 1014


View Profile
April 27, 2011, 06:32:50 PM
 #5

Is the account information and stuff sent over to your server as https?

ryepdx (OP)
Hero Member
*****
Offline Offline

Activity: 714
Merit: 500


View Profile
April 27, 2011, 10:02:03 PM
 #6

Crashed it at signup...

Yeah, I was having some trouble getting the MySQL server to start up correctly a little while ago. I guess some of the tables still needed to be checked and repaired. Shouldn't give you any more trouble now, though.

Is the account information and stuff sent over to your server as https?

Yes! In fact, I've set up a Rewrite directive so Apache forces all non-SSL attempts at connections to connect via SSL. There is no other way of connecting to Bitcoin Pouch. :-)
BitterTea
Sr. Member
****
Offline Offline

Activity: 294
Merit: 250



View Profile
April 27, 2011, 10:46:07 PM
 #7

One thing I'd recommend is adding some OpenID buttons, like here. I was really confused at first because I'd never had to know the long Google OpenID authorization url.

Also, I had to manually call jsonrpc.getnewaddress() in order to populate an address in my profile. Is that normal?

Other than that, I very much like this, good job!
kiba
Legendary
*
Offline Offline

Activity: 980
Merit: 1014


View Profile
April 27, 2011, 11:12:31 PM
 #8

Hmm, I think I can integrate this service somehow into the chrome extension.  Smiley

I typed getbalance into the console and it gave me an error though.  Undecided

ryepdx (OP)
Hero Member
*****
Offline Offline

Activity: 714
Merit: 500


View Profile
April 27, 2011, 11:53:28 PM
 #9

One thing I'd recommend is adding some OpenID buttons, like here. I was really confused at first because I'd never had to know the long Google OpenID authorization url.

Thanks! I'll definitely put that up as a task.

Also, I had to manually call jsonrpc.getnewaddress() in order to populate an address in my profile. Is that normal?

No. I thought at least that part of things was working. Apparently not...

Other than that, I very much like this, good job!

Thanks! :-)
ryepdx (OP)
Hero Member
*****
Offline Offline

Activity: 714
Merit: 500


View Profile
April 27, 2011, 11:54:42 PM
 #10

Hmm, I think I can integrate this service somehow into the chrome extension.  Smiley

That would be awesome. :-)

I typed getbalance into the console and it gave me an error though.  Undecided

Hrm. Okay, thanks for the bug report. I'll get on that ASAP.
ryepdx (OP)
Hero Member
*****
Offline Offline

Activity: 714
Merit: 500


View Profile
April 29, 2011, 05:03:13 AM
 #11

Okay, all the bugs mentioned here have been fixed. I was unable to duplicate the error you had though, BitterTea. It might have had something to do with the upgrade to bitcoind 0.3.21. I downgraded back to bitcoind 0.3.20 because 0.3.21 hung on my server and things seem to be working. I created a new account and was assigned a new bitcoin address as I should have been. One odd thing though: the welcome e-mails with the confirmation codes weren't being sent out, so I'm not really sure how anyone was able to complete registration at all... :-/

At any rate, you can now use the js-remote on the Bitcoin Pouch website if you like, or, if you have Chrome, you can enter your Bitcoin Pouch login information and the Bitcoin Pouch bitcoind API URL (https://bitcoinpouch.com/api/bitcoind/) into the js-remote demo website and that should work. (Firefox is still having problems with allowing that particular maneuver. I keep getting a 400 error from the OPTIONS request it tries to send out. Not sure why yet. Wasn't able to test in IE as the only version I have is 9 and js-remote apparently doesn't work in it.)
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!