peatio-bitgo 1.1.2 → 2.5.0
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 +4 -4
- data/Gemfile.lock +19 -19
- data/lib/peatio/bitgo/version.rb +1 -1
- data/lib/peatio/bitgo/wallet.rb +30 -10
- data/peatio-bitgo.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fce3c54f47f8933c24b2fef521c89acd4ead3ed48fa49c183fb9f67fb3f042a5
|
4
|
+
data.tar.gz: 999ec62e379696270429caf760e02c95a078727539b9f5bb42cbd31435987109
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30f38ef6aadce408ecf0cd4a4ec04333175f8eee4ca17a07445149dd6e4d31739836917dd3e7d7645dd2f86c7ab7b750c376dda9c0bc9b4e1b35821157543578
|
7
|
+
data.tar.gz: 369b7c7d44c01743f8d32ed77d29f89462873ba1c0383dbc5c66ac67e372098be2a822a937ee9cb736a5ffd390b63f5c07d81aa981b8ff9c2d124ffe378e099f
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
peatio-bitgo (
|
4
|
+
peatio-bitgo (2.5.0)
|
5
5
|
activesupport (~> 5.2.3)
|
6
6
|
better-faraday (~> 1.0.5)
|
7
|
-
faraday (~> 0.
|
7
|
+
faraday (~> 0.17)
|
8
8
|
memoist (~> 0.16.0)
|
9
9
|
net-http-persistent (~> 3.0.1)
|
10
10
|
peatio (>= 0.6.3)
|
@@ -12,35 +12,35 @@ PATH
|
|
12
12
|
GEM
|
13
13
|
remote: https://rubygems.org/
|
14
14
|
specs:
|
15
|
-
activemodel (5.2.4.
|
16
|
-
activesupport (= 5.2.4.
|
17
|
-
activesupport (5.2.4.
|
15
|
+
activemodel (5.2.4.3)
|
16
|
+
activesupport (= 5.2.4.3)
|
17
|
+
activesupport (5.2.4.3)
|
18
18
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
19
19
|
i18n (>= 0.7, < 2)
|
20
20
|
minitest (~> 5.1)
|
21
21
|
tzinfo (~> 1.1)
|
22
22
|
addressable (2.7.0)
|
23
23
|
public_suffix (>= 2.0.2, < 5.0)
|
24
|
-
amq-protocol (2.3.
|
24
|
+
amq-protocol (2.3.1)
|
25
25
|
amqp (1.8.0)
|
26
26
|
amq-protocol (>= 2.2.0)
|
27
27
|
eventmachine
|
28
28
|
better-faraday (1.0.8)
|
29
29
|
activesupport (>= 4.0, < 6.0)
|
30
30
|
faraday (~> 0.12)
|
31
|
-
bunny (2.
|
32
|
-
amq-protocol (~> 2.3, >= 2.3.
|
31
|
+
bunny (2.15.0)
|
32
|
+
amq-protocol (~> 2.3, >= 2.3.1)
|
33
33
|
byebug (11.1.1)
|
34
34
|
clamp (1.3.1)
|
35
35
|
coderay (1.1.2)
|
36
36
|
concurrent-ruby (1.1.6)
|
37
|
-
connection_pool (2.2.
|
37
|
+
connection_pool (2.2.3)
|
38
38
|
cookiejar (0.3.3)
|
39
39
|
crack (0.4.3)
|
40
40
|
safe_yaml (~> 1.0.0)
|
41
41
|
daemons (1.3.1)
|
42
42
|
diff-lcs (1.3)
|
43
|
-
em-http-request (1.1.
|
43
|
+
em-http-request (1.1.6)
|
44
44
|
addressable (>= 2.3.4)
|
45
45
|
cookiejar (!= 0.3.1)
|
46
46
|
em-socksify (>= 0.3)
|
@@ -54,11 +54,11 @@ GEM
|
|
54
54
|
eventmachine (>= 0.12.9)
|
55
55
|
http_parser.rb (~> 0.6.0)
|
56
56
|
eventmachine (1.2.7)
|
57
|
-
faraday (0.
|
57
|
+
faraday (0.17.3)
|
58
58
|
multipart-post (>= 1.2, < 3)
|
59
59
|
faraday_middleware (0.13.1)
|
60
60
|
faraday (>= 0.7.4, < 1.0)
|
61
|
-
faye (1.
|
61
|
+
faye (1.3.0)
|
62
62
|
cookiejar (>= 0.3.0)
|
63
63
|
em-http-request (>= 0.3.0)
|
64
64
|
eventmachine (>= 0.12.0)
|
@@ -71,19 +71,19 @@ GEM
|
|
71
71
|
websocket-driver (>= 0.5.1)
|
72
72
|
hashdiff (1.0.1)
|
73
73
|
http_parser.rb (0.6.0)
|
74
|
-
i18n (1.8.
|
74
|
+
i18n (1.8.3)
|
75
75
|
concurrent-ruby (~> 1.0)
|
76
76
|
jwt (2.2.1)
|
77
77
|
memoist (0.16.2)
|
78
78
|
method_source (1.0.0)
|
79
|
-
minitest (5.14.
|
79
|
+
minitest (5.14.1)
|
80
80
|
mocha (1.11.2)
|
81
81
|
multi_json (1.14.1)
|
82
82
|
multipart-post (2.1.1)
|
83
83
|
mysql2 (0.5.3)
|
84
84
|
net-http-persistent (3.0.1)
|
85
85
|
connection_pool (~> 2.2)
|
86
|
-
peatio (2.
|
86
|
+
peatio (2.6.1)
|
87
87
|
activemodel (> 5.2, <= 6.0.0)
|
88
88
|
amqp
|
89
89
|
bunny
|
@@ -104,7 +104,7 @@ GEM
|
|
104
104
|
pry-byebug (3.9.0)
|
105
105
|
byebug (~> 11.0)
|
106
106
|
pry (~> 0.13.0)
|
107
|
-
public_suffix (4.0.
|
107
|
+
public_suffix (4.0.4)
|
108
108
|
rack (2.2.2)
|
109
109
|
rake (13.0.1)
|
110
110
|
rspec (3.9.0)
|
@@ -126,15 +126,15 @@ GEM
|
|
126
126
|
eventmachine (~> 1.0, >= 1.0.4)
|
127
127
|
rack (>= 1, < 3)
|
128
128
|
thread_safe (0.3.6)
|
129
|
-
tzinfo (1.2.
|
129
|
+
tzinfo (1.2.7)
|
130
130
|
thread_safe (~> 0.1)
|
131
131
|
webmock (3.8.3)
|
132
132
|
addressable (>= 2.3.6)
|
133
133
|
crack (>= 0.3.2)
|
134
134
|
hashdiff (>= 0.4.0, < 2.0.0)
|
135
|
-
websocket-driver (0.7.
|
135
|
+
websocket-driver (0.7.2)
|
136
136
|
websocket-extensions (>= 0.1.0)
|
137
|
-
websocket-extensions (0.1.
|
137
|
+
websocket-extensions (0.1.5)
|
138
138
|
|
139
139
|
PLATFORMS
|
140
140
|
ruby
|
data/lib/peatio/bitgo/version.rb
CHANGED
data/lib/peatio/bitgo/wallet.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Peatio
|
2
2
|
module Bitgo
|
3
3
|
class Wallet < Peatio::Wallet::Abstract
|
4
|
+
TIME_DIFFERENCE_IN_MINUTES = 10
|
4
5
|
|
5
6
|
def initialize(settings = {})
|
6
7
|
@settings = settings
|
@@ -24,10 +25,14 @@ module Peatio
|
|
24
25
|
def create_address!(options = {})
|
25
26
|
currency = erc20_currency_id
|
26
27
|
options.deep_symbolize_keys!
|
27
|
-
|
28
|
+
|
29
|
+
if options.dig(:pa_details, :address_id).present? &&
|
30
|
+
options.dig(:pa_details, :updated_at).present? &&
|
31
|
+
time_difference_in_minutes(options.dig(:pa_details, :updated_at)) >= TIME_DIFFERENCE_IN_MINUTES
|
32
|
+
|
28
33
|
response = client.rest_api(:get, "#{currency}/wallet/#{wallet_id}/address/#{options.dig(:pa_details, :address_id)}")
|
29
34
|
{ address: response['address'], secret: bitgo_wallet_passphrase }
|
30
|
-
|
35
|
+
elsif options.dig(:pa_details, :address_id).blank?
|
31
36
|
response = client.rest_api(:post, "#{currency}/wallet/#{wallet_id}/address")
|
32
37
|
{ address: response['address'], secret: bitgo_wallet_passphrase, details: { address_id: response['id'] }}
|
33
38
|
end
|
@@ -36,7 +41,7 @@ module Peatio
|
|
36
41
|
end
|
37
42
|
|
38
43
|
def create_transaction!(transaction, options = {})
|
39
|
-
currency_options = @currency.fetch(:options).slice(:gas_limit, :gas_price)
|
44
|
+
currency_options = @currency.fetch(:options).slice(:gas_limit, :gas_price, :erc20_contract_address)
|
40
45
|
|
41
46
|
if currency_options[:gas_limit].present? && currency_options[:gas_price].present?
|
42
47
|
options.merge!(currency_options)
|
@@ -77,13 +82,15 @@ module Peatio
|
|
77
82
|
|
78
83
|
def create_eth_transaction(transaction, options = {})
|
79
84
|
amount = convert_to_base_unit(transaction.amount)
|
85
|
+
hop = true unless options.slice(:erc20_contract_address).present?
|
80
86
|
|
81
87
|
txid = client.rest_api(:post, "#{currency_id}/wallet/#{wallet_id}/sendcoins", {
|
82
88
|
address: transaction.to_address.to_s,
|
83
89
|
amount: amount.to_s,
|
84
90
|
walletPassphrase: bitgo_wallet_passphrase,
|
85
91
|
gas: options.fetch(:gas_limit).to_i,
|
86
|
-
gasPrice: options.fetch(:gas_price).to_i
|
92
|
+
gasPrice: options.fetch(:gas_price).to_i,
|
93
|
+
hop: hop
|
87
94
|
}.compact).fetch('txid')
|
88
95
|
|
89
96
|
transaction.hash = normalize_txid(txid)
|
@@ -109,14 +116,15 @@ module Peatio
|
|
109
116
|
end
|
110
117
|
|
111
118
|
def trigger_webhook_event(event)
|
112
|
-
|
113
|
-
return unless
|
119
|
+
currency = @wallet.fetch(:testnet).present? ? 't' + @currency.fetch(:id) : @currency.fetch(:id)
|
120
|
+
return unless currency == event['coin'] && @wallet.fetch(:wallet_id) == event['wallet']
|
114
121
|
|
115
122
|
if event['type'] == 'transfer'
|
116
123
|
transactions = fetch_transfer!(event['transfer'])
|
117
124
|
return { transfers: transactions }
|
118
|
-
elsif event['address_confirmation'
|
119
|
-
|
125
|
+
elsif event['type'] == 'address_confirmation'
|
126
|
+
address_id = fetch_address_id(event['address'])
|
127
|
+
return { address_id: address_id, currency_id: currency_id }
|
120
128
|
end
|
121
129
|
end
|
122
130
|
|
@@ -125,6 +133,14 @@ module Peatio
|
|
125
133
|
address_confirmation_webhook(url)
|
126
134
|
end
|
127
135
|
|
136
|
+
def fetch_address_id(address)
|
137
|
+
currency = erc20_currency_id
|
138
|
+
client.rest_api(:get, "#{currency}/wallet/#{wallet_id}/address/#{address}")
|
139
|
+
.fetch('id')
|
140
|
+
rescue Bitgo::Client::Error => e
|
141
|
+
raise Peatio::Wallet::ClientError, e
|
142
|
+
end
|
143
|
+
|
128
144
|
def fetch_transfer!(id)
|
129
145
|
# TODO: Add Rspecs for this one
|
130
146
|
response = client.rest_api(:get, "#{currency_id}/wallet/#{wallet_id}/transfer/#{id}")
|
@@ -167,7 +183,7 @@ module Peatio
|
|
167
183
|
|
168
184
|
def address_confirmation_webhook(url)
|
169
185
|
client.rest_api(:post, "#{currency_id}/wallet/#{wallet_id}/webhooks", {
|
170
|
-
type: '
|
186
|
+
type: 'address_confirmation',
|
171
187
|
allToken: true,
|
172
188
|
url: url,
|
173
189
|
label: "webhook for #{url}",
|
@@ -250,9 +266,13 @@ module Peatio
|
|
250
266
|
x.to_i
|
251
267
|
end
|
252
268
|
|
269
|
+
def time_difference_in_minutes(updated_at)
|
270
|
+
(Time.now - updated_at)/60
|
271
|
+
end
|
272
|
+
|
253
273
|
def define_transaction_state(state)
|
254
274
|
case state
|
255
|
-
when '
|
275
|
+
when 'unconfirmed'
|
256
276
|
'pending'
|
257
277
|
when 'confirmed'
|
258
278
|
'success'
|
data/peatio-bitgo.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
|
26
26
|
spec.add_dependency "activesupport", "~> 5.2.3"
|
27
27
|
spec.add_dependency "better-faraday", "~> 1.0.5"
|
28
|
-
spec.add_dependency "faraday", "~> 0.
|
28
|
+
spec.add_dependency "faraday", "~> 0.17"
|
29
29
|
spec.add_dependency "memoist", "~> 0.16.0"
|
30
30
|
spec.add_dependency "peatio", ">= 0.6.3"
|
31
31
|
spec.add_dependency 'net-http-persistent', '~> 3.0.1'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: peatio-bitgo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nadia Ch., Maksym N.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: '0.17'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: '0.17'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: memoist
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|