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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 034458f790aa11b634b8bb69124f656c0eda1f9b
|
4
|
+
data.tar.gz: 183a2755af1208eb7dc3c0a985986d4e5f592095
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
|
data/lib/onchain/transaction.rb
CHANGED
@@ -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.
|
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-
|
11
|
+
date: 2016-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|