onchain 2.3 → 2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3e0ae65d6e54cbc4599ea2ccb949acc9a2482ced
4
- data.tar.gz: b71e1ebe3e447b7663e171bbf8de786e91e1cf53
3
+ metadata.gz: 034458f790aa11b634b8bb69124f656c0eda1f9b
4
+ data.tar.gz: 183a2755af1208eb7dc3c0a985986d4e5f592095
5
5
  SHA512:
6
- metadata.gz: 1e95e29074f81ac939a68bdb16ff3d03a63dfcf5c2a9a50333c75932c386431f295d263d2c38bb1991210732e8cc39939b9babb961de719350bfe0eccbac1f19
7
- data.tar.gz: 33581e5f053abf20126df74cce178e927afeabb4e363e295ed413b9e0065012d6f6f579cd49ee5553328b152a8435b09a6239aacfd6355734adaadc188af5e60
6
+ metadata.gz: 3b257a25e848762377438c1cde57b3fc9e34d2e2329c8f9b38ee3bae30b4238e9ff7282b85681096178b40935cee8593e66f5f291b7a77df9c44b10d99f5bc11
7
+ data.tar.gz: 2f4da8dda8a8b4476817a0491f01a64720f34a63868099936c72dcb464207138ca6b4815d94f3a6bd1e7b93277e00db3931d586c397abb95f28ab1ac53bb4858
@@ -126,6 +126,11 @@ class OnChain::BlockChain
126
126
  end
127
127
  return bal
128
128
  end
129
+
130
+ def blockinfo_get_transaction(txhash)
131
+ base = "https://blockchain.info/rawtx/#{txhash}?format=hex"
132
+ return fetch_response(URI::encode(base))
133
+ end
129
134
 
130
135
  def block_chain(cmd, address, params = "")
131
136
  base_url = "https://blockchain.info/#{cmd}/#{address}?format=json" + params
@@ -101,6 +101,11 @@ class OnChain::BlockChain
101
101
  cache_write(addr, bal, BALANCE_CACHE_FOR)
102
102
  end
103
103
  end
104
+
105
+ def blockr_get_transaction(txhash)
106
+ base = "https://blockr.io/api/v1/tx/raw/" + txhash
107
+ return fetch_response(URI::encode(base))['data']['tx']['hex']
108
+ end
104
109
 
105
110
  def blockr(cmd, address, params = "")
106
111
 
@@ -1,6 +1,37 @@
1
1
  class OnChain::Transaction
2
2
  class << self
3
3
 
4
+ # Check a transactions inputs only spend enough to cover fees and amount
5
+ # Basically if onchain creates an incorrect transaction the client
6
+ # can identify it here.
7
+ def check_integrity(txhex, amount, orig_addresses, dest_addr, tolerence)
8
+
9
+ tx = Bitcoin::Protocol::Tx.new OnChain::hex_to_bin(txhex)
10
+
11
+ input_amount = 0
12
+ # Let's add up the value of all the inputs.
13
+ tx.in.each_with_index do |txin, index|
14
+ prev_hash = txin.to_hash['prev_out']['hash']
15
+ prev_index = txin.to_hash['prev_out']['n']
16
+
17
+ # Get the amount for the previous output
18
+ prevhex = OnChain::BlockChain.get_transaction(prev_hash)
19
+ prev_tx = Bitcoin::Protocol::Tx.new OnChain::hex_to_bin(prevhex)
20
+ input_amount += prev_tx.out[prev_index].value
21
+
22
+ if ! orig_addresses.include? prev_tx.out[prev_index].parsed_script.get_hash160_address
23
+ raise "One of the inputs is not from from our list of valid originating addresses"
24
+ end
25
+ end
26
+
27
+ tolerence = (amount * (1 + tolerence))
28
+ if input_amount > tolerence
29
+ raise "Transaction has more input value (#{input_amount}) than the tolerence #{tolerence}"
30
+ end
31
+
32
+ return true
33
+ end
34
+
4
35
  def create_single_address_transaction(orig_addr, dest_addr, amount, fee_percent, fee_addr, min_fee_satoshi)
5
36
 
6
37
  tx = Bitcoin::Protocol::Tx.new
@@ -11,6 +42,7 @@ class OnChain::Transaction
11
42
 
12
43
  unspents, indexes, change = OnChain::BlockChain.get_unspent_for_amount(
13
44
  [orig_addr], total_amount)
45
+ indexes = nil
14
46
 
15
47
 
16
48
  # Process the unpsent outs.
@@ -66,7 +98,7 @@ class OnChain::Transaction
66
98
  # Like create_single_address_transaction but for multi sig wallets.
67
99
  def create_transaction_with_fee(redemption_scripts, address, amount, fee_percent, fee_addr)
68
100
 
69
- fee = calculate_fee(amount, fee_percent)
101
+ fee = calculate_fee(amount, fee_percent, 10000)
70
102
 
71
103
  total_amount = amount + fee
72
104
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onchain
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.3'
4
+ version: '2.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Purton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-18 00:00:00.000000000 Z
11
+ date: 2016-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake