onchain 2.6 → 2.7

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: 2193dbde4c0d67e834351acccd08a750e43fd728
4
- data.tar.gz: 5c0198213f4943b4a9c227ebbc585a7badbf24d0
3
+ metadata.gz: 5fd37bc684d309bb9c0a1fdacfbb066e61bfc0d0
4
+ data.tar.gz: dd377843c1479db0d1fdc5c98692cf94ecc367f9
5
5
  SHA512:
6
- metadata.gz: 0aee998b0737e7884dc33dd4e1d8d77b775e6d3e9a7d06f724cc277de77a7eb35d762c3ab53ab59961e6acda3891df010daaae0a9daf55426d6cd781b814748d
7
- data.tar.gz: 808d0da5669a5b473e3359ee79a0973eb22774544ffa10b2b8bf5842fa5bcab47359db6fa271c4e5e65444b93d6566cdf18ea29d6300b8f85a35d6129c4d9d3a
6
+ metadata.gz: 821744ea8ad3475efd1275ce2088c830c173af33603998405be8b1d55ed749e687a472cd6dca18f870e4e6fcb1fb002eda10c0066c9cca2687bed145bba2c8c9
7
+ data.tar.gz: 92de84981941cbfb00e1a98b01877b4a8d1abf623c9677b1ac3080850c2a802c74bc916a052e0d2289e677a043959672ec3333b9042947455d6f921dca003f49
@@ -81,7 +81,7 @@ class OnChain::BlockChain
81
81
  return ret
82
82
  end
83
83
 
84
- def get_unspent_for_amount(addresses, amount_in_satoshi)
84
+ def get_unspent_for_amount(addresses, amount_in_satoshi, network = :bitcoin)
85
85
 
86
86
  unspents = []
87
87
  indexes = []
@@ -93,7 +93,7 @@ class OnChain::BlockChain
93
93
  break
94
94
  end
95
95
 
96
- unspent_outs = get_unspent_outs(address)
96
+ unspent_outs = get_unspent_outs(address, network)
97
97
 
98
98
  unspent_outs.each do |spent|
99
99
 
@@ -40,7 +40,8 @@ class OnChain::Transaction
40
40
  return true
41
41
  end
42
42
 
43
- def create_single_address_transaction(orig_addr, dest_addr, amount, fee_percent, fee_addr, min_fee_satoshi)
43
+ def create_single_address_transaction(orig_addr, dest_addr, amount,
44
+ fee_percent, fee_addr, min_fee_satoshi, network = :bitcoin)
44
45
 
45
46
  tx = Bitcoin::Protocol::Tx.new
46
47
 
@@ -49,7 +50,7 @@ class OnChain::Transaction
49
50
  total_amount = amount + fee
50
51
 
51
52
  unspents, indexes, change = OnChain::BlockChain.get_unspent_for_amount(
52
- [orig_addr], total_amount)
53
+ [orig_addr], total_amount, network)
53
54
  indexes = nil
54
55
 
55
56
 
@@ -60,17 +61,17 @@ class OnChain::Transaction
60
61
  txin.script_sig = OnChain.hex_to_bin(spent[2])
61
62
  tx.add_in(txin)
62
63
  end
63
- txout = Bitcoin::Protocol::TxOut.new(amount, Bitcoin::Script.to_address_script(dest_addr))
64
+ txout = Bitcoin::Protocol::TxOut.new(amount, to_address_script(dest_addr, network))
64
65
 
65
66
  tx.add_out(txout)
66
67
 
67
68
  # Add wallet fee
68
- add_fee_to_tx(fee, fee_addr, tx)
69
+ add_fee_to_tx(fee, fee_addr, tx, network)
69
70
 
70
71
  # Send the change back.
71
72
  if change > 0
72
73
 
73
- txout = Bitcoin::Protocol::TxOut.new(change, Bitcoin::Script.to_address_script(orig_addr))
74
+ txout = Bitcoin::Protocol::TxOut.new(change, to_address_script(orig_addr, network))
74
75
 
75
76
  tx.add_out(txout)
76
77
  end
@@ -80,7 +81,19 @@ class OnChain::Transaction
80
81
  return OnChain::bin_to_hex(tx.to_payload), inputs_to_sign
81
82
  end
82
83
 
83
- def add_fee_to_tx(fee, fee_addr, tx)
84
+ # The bitcoin ruby methods are not thread safe when switching between
85
+ # testnet and the bitcoin network.
86
+ def to_address_script(orig_addr, network = :bitcoin)
87
+
88
+ # TODO add thread safety.
89
+ Bitcoin.network = network
90
+ address = Bitcoin::Script.to_address_script(orig_addr)
91
+ Bitcoin.network = :bitcoin
92
+
93
+ return address
94
+ end
95
+
96
+ def add_fee_to_tx(fee, fee_addr, tx, network = :bitcoin)
84
97
 
85
98
  # Add wallet fee
86
99
  if fee > 0 and (fee - 10000) > 0
@@ -91,12 +104,12 @@ class OnChain::Transaction
91
104
  # Check for affiliate
92
105
  if fee_addr.kind_of?(Array)
93
106
  affil_fee = fee / 2
94
- txout1 = Bitcoin::Protocol::TxOut.new(affil_fee, Bitcoin::Script.to_address_script(fee_addr[0]))
95
- txout2 = Bitcoin::Protocol::TxOut.new(affil_fee, Bitcoin::Script.to_address_script(fee_addr[1]))
107
+ txout1 = Bitcoin::Protocol::TxOut.new(affil_fee, to_address_script(fee_addr[0], network))
108
+ txout2 = Bitcoin::Protocol::TxOut.new(affil_fee, to_address_script(fee_addr[1], network))
96
109
  tx.add_out(txout1)
97
110
  tx.add_out(txout2)
98
111
  else
99
- txout = Bitcoin::Protocol::TxOut.new(fee, Bitcoin::Script.to_address_script(fee_addr))
112
+ txout = Bitcoin::Protocol::TxOut.new(fee, to_address_script(fee_addr, network))
100
113
  tx.add_out(txout)
101
114
  end
102
115
  end
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.6'
4
+ version: '2.7'
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-02-23 00:00:00.000000000 Z
11
+ date: 2016-02-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake