GithubHelp home page GithubHelp logo

webtc's Introduction

== WeBTC

This is a bitcoin online-wallet application based on the bitcoind RPC API.

== Requirements

* bitcoind
* ruby 1.9
* rails 3
* database (ActiveRecord compatible; sqlite3, mysql, pgsql)
* GPG and GPGME

== Features

* list/display addresses
* list/display transactions
* label addresses
* send transactions (autocomplete labels)
* (of course it also receives transactions, but bitcoind does that for us :)
* key encryption (see below)
* flexible transaction verification / limits

== Key encryption

Every user may have a GPG key secured with his account password.
When the user signs out, all his bitcoin private keys are encrypted to this GPG key
and then removed from bitcoind.
When the user signs in again, he gives his password, the keys are decrypted and
loaded into bitcoind.
This way an attacker who compromised the server only has access to the currently
logged in users' money.

This can be enabled globally in config/application.rb (because it requires a patched
bitcoind) or as a user setting (because it makes password recovery impossible).

For this to work, you need a bitcoind that supports dumping, loading and removing
private keys. For the time being you have to use the 'showwallet' and 'removeprivkey'
branches from my git repo (git://github.com/mhanne/bitcoin.git).

== Transaction Verification

There are different kinds of verifications, all have in common that they generate a
code, store a salted hash, and send it to the user through a specified delivery method.
Delivery methods can be email, SMS, Jabber, whatever.. (only email yet).
A user can define rules which specifiy an amount, a time frame and a verification method.
Each transaction exceeding the amount in the given timeframe needs to be verified with
the defined method. Codes are sent to the user and they must be entered on a confirmation
page before the transaction is sent to bitcoind.
There are also two special kinds of verifications:
"Confirm" only displays the confirmation page, but provides the code in a hidden form field.
"Deny" throws away the code so it can never be verified; to be used for hard limits.

== Setup

Install ruby 1.9 via your distribution, RVM or from source.
Install development libraries for your database.
Run `bundle install` to install all ruby libraries.
Edit config/database.yml (if you don't use sqlite3)
Run `rake db:migrate` to setup the database.
Edit config/application.rb and configure your bitcoind connection.
Create .gpg/ folder with chmod 700
Run `rails s` to start the webserver.
Open your browser at http://localhost:3000/

== Tests

To run the tests, make sure you have a test database configured and the schema loaded.

 rake db:test:prepare

Then you can run either the whole test suite

 rake spec

or individual tests with

 spec spec/controllers/transactions_controller_spec.rb

== License

This application is released under the MIT license (see LICENSE file).

webtc's People

Contributors

mhanne avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

webtc's Issues

"Edit config/application.rb and configure your bitcoind connection."

Hey, I'm a little confused about what you mean in the instructions when you say

"Edit config/application.rb and configure your bitcoind connection."

I've done everything else and when i launch the rails server i get this error message and I'm wondering if it has anything to do with the above? ^

Errno::ECONNREFUSED in Accounts#index

Showing /Users/jasonravel/Downloads/webtc-master/app/views/layouts/application.html.haml where line #9 raised:

Connection refused - connect(2)
Extracted source (around line #9):

6: = stylesheet_link_tag "webtc", "autocomplete"
7:
8: %body
9: - @info = BITCOIN.getinfo
10: #header
11: .title
12: = link_to t('header.site_name'), root_path

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.