xgt-ruby 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2934e401f48d257027b4426daaec218f68d4d18c3cf23139ab4f6279e210419
4
- data.tar.gz: 4677553dd544e206cfb57acc27fad867233e7d20493b58b3faead26c8f4711f7
3
+ metadata.gz: 75d47a02d26c207945df14673e959a9c788814c9b1614d1ab937752dd2129b48
4
+ data.tar.gz: 027ea4b161bd535eb46b90eda33dc1d6ca573ee75ca4fa5790d0e7f0a914d7b6
5
5
  SHA512:
6
- metadata.gz: 5f4aca6c76c64547fd78738921b144a32cfb4f709bb9f54a79b32e8e97d549e3fc56bab5350175c2142dc575e916a6d918c4a0d08c054a18c983c8e999e1ef92
7
- data.tar.gz: f0acb66987f57ef1625f2046ac06190a9388e15fcf3eae066e1946032a5c689ac17de4e80208f622663414c60e8f1108d0b64b7276f311f9e88dd24bfb3c252b
6
+ metadata.gz: a2a497619dc1e6a1385905ee2eb9203bffe71db467280ec6c4768eb038b170846ab8413ef9d5bfd96a8a3d05a56644b721f22d0664069ea532aa8f23e71bf51c
7
+ data.tar.gz: '0503416839a39f1dde3f50fa871d17eaacc7a07ca1b7931d7cbc2b48a24ae3dc088220016081df7a1fdf04272dd6bc85d3629ea94ede7bf55fe38c948d4e94db'
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ *.swp
data/Dockerfile ADDED
@@ -0,0 +1,33 @@
1
+ FROM ubuntu:20.04
2
+
3
+ WORKDIR /home/root
4
+
5
+ ENV DEBIAN_FRONTEND="noninteractive"
6
+
7
+ RUN apt-get clean && apt-get update
8
+
9
+ RUN apt-get install -y git curl build-essential
10
+ RUN apt-get install -y libssl-dev zlib1g-dev
11
+
12
+ RUN git clone https://github.com/sstephenson/rbenv.git /root/.rbenv
13
+ RUN git clone https://github.com/sstephenson/ruby-build.git /root/.rbenv/plugins/ruby-build
14
+ RUN /root/.rbenv/plugins/ruby-build/install.sh
15
+ ENV PATH /root/.rbenv/bin:$PATH
16
+ RUN echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh # or /etc/profile
17
+ RUN echo 'eval "$(rbenv init -)"' >> .bashrc
18
+ ENV CONFIGURE_OPTS --disable-install-doc
19
+ RUN rbenv install 2.7.2
20
+ RUN rbenv global 2.7.2
21
+ RUN rbenv rehash
22
+
23
+ RUN ["/bin/bash", "-c", "source /home/root/.bashrc && gem update --system"]
24
+ RUN ["/bin/bash", "-c", "source /home/root/.bashrc && gem install bundler rake"]
25
+ RUN ["/bin/bash", "-c", "source /home/root/.bashrc && rbenv rehash"]
26
+
27
+ COPY . /home/root/xgt-ruby
28
+
29
+ RUN ["/bin/bash", "-c", "source /home/root/.bashrc && cd xgt-ruby && bundle"]
30
+
31
+ CMD ["/bin/bash", "-c", "source /home/root/.bashrc && cd xgt-ruby && ./exe/xgt-wallet"]
32
+
33
+
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem "bitcoin-ruby", git: 'https://github.com/raggi/bitcoin-ruby'
3
4
  # Specify your gem's dependencies in xgt-ruby.gemspec
4
5
  gemspec
data/Gemfile.lock CHANGED
@@ -1,3 +1,12 @@
1
+ GIT
2
+ remote: https://github.com/raggi/bitcoin-ruby
3
+ revision: ee22140522b1ee75a363ff7aaa56d1925d5bde9d
4
+ specs:
5
+ bitcoin-ruby (0.0.20)
6
+ eventmachine
7
+ ffi
8
+ scrypt
9
+
1
10
  PATH
2
11
  remote: .
3
12
  specs:
@@ -11,17 +20,13 @@ GEM
11
20
  remote: https://rubygems.org/
12
21
  specs:
13
22
  base58 (0.2.3)
14
- bitcoin-ruby (0.0.20)
15
- eventmachine
16
- ffi
17
- scrypt
18
23
  diff-lcs (1.3)
19
24
  eventmachine (1.2.7)
20
25
  faraday (0.15.4)
21
26
  multipart-post (>= 1.2, < 3)
22
27
  faraday_middleware (0.13.1)
23
28
  faraday (>= 0.7.4, < 1.0)
24
- ffi (1.15.0)
29
+ ffi (1.15.1)
25
30
  ffi-compiler (1.0.1)
26
31
  ffi (>= 1.0.0)
27
32
  rake
@@ -47,6 +52,7 @@ PLATFORMS
47
52
  ruby
48
53
 
49
54
  DEPENDENCIES
55
+ bitcoin-ruby!
50
56
  bundler (~> 2.0)
51
57
  rake (~> 13.0.3)
52
58
  rspec (~> 3.0)
data/exe/xgt-wallet CHANGED
@@ -1,8 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'logger'
4
- require 'bundler/setup'
5
3
  require 'xgt/ruby'
4
+ require 'logger'
6
5
  require 'bigdecimal'
7
6
 
8
7
  # ------
@@ -120,12 +119,14 @@ def rpc
120
119
  Xgt::Ruby::Rpc.new(@host)
121
120
  end
122
121
 
122
+ =begin
123
123
  def chain_properties
124
124
  return @chain_properties if @chain_properties
125
125
  witness_schedule = rpc.call('database_api.get_witness_schedule', {}) || {}
126
126
  @chain_properties = witness_schedule['median_props']
127
127
  @chain_properties
128
128
  end
129
+ =end
129
130
 
130
131
  def config
131
132
  return @config if @config
@@ -134,25 +135,15 @@ def config
134
135
  end
135
136
 
136
137
  def address_prefix
137
- return @address_prefix if @address_prefix
138
- @address_prefix = config['XGT_ADDRESS_PREFIX']
139
- logger.info(%(Retrieved address prefix... #{@address_prefix}))
140
- @address_prefix
138
+ return "XGT"
141
139
  end
142
140
 
143
141
  def chain_id
144
- return @chain_id if @chain_id
145
- @chain_id = config['XGT_CHAIN_ID']
146
- logger.info(%(Retrieved chain ID... #{@chain_id}))
147
- @chain_id
142
+ "4e08b752aff5f66e1339cb8c0a8bca14c4ebb238655875db7dade86349091197"
148
143
  end
149
144
 
150
145
  def precision
151
- 8 # TODO: Make dynamic
152
- end
153
-
154
- def fee
155
- (chain_properties['account_creation_fee'] || {})['amount']
146
+ 8
156
147
  end
157
148
 
158
149
  def currency_symbol
@@ -196,7 +187,7 @@ def info
196
187
  print(%(\n))
197
188
  puts(%(You can get an Xgt::Ruby::Rpc instance via `rpc`.))
198
189
  print(%(\n))
199
- puts(%(Any method in `bin/wallet` is available from this CLI, so take a look!))
190
+ puts(%(Any method in `xgt-wallet` is available from this CLI, so take a look!))
200
191
  print(%(\n))
201
192
  true
202
193
  end
@@ -229,7 +220,7 @@ def create_wallet
229
220
  'type' => 'wallet_create_operation',
230
221
  'value' => {
231
222
  'fee' => {
232
- 'amount' => fee,
223
+ 'amount' => '0',
233
224
  'precision' => precision,
234
225
  'nai' => '@@000000021'
235
226
  },
@@ -255,6 +246,10 @@ def create_wallet
255
246
  }]
256
247
  }
257
248
 
249
+ output_result
250
+
251
+ p current_wifs
252
+
258
253
  id = rpc.broadcast_transaction(txn, current_wifs, chain_id)
259
254
  (puts 'Waiting...' or sleep 1) until fetch_wallet_name(current_name)
260
255
 
@@ -265,6 +260,92 @@ def create_wallet
265
260
  true
266
261
  end
267
262
 
263
+ require 'net/http'
264
+ require 'json'
265
+
266
+ def create_mining_wallet
267
+ master = Xgt::Ruby::Auth.random_wif
268
+ recovery_private = Xgt::Ruby::Auth.generate_wif("33", master, 'recovery')
269
+ recovery_public = Xgt::Ruby::Auth.wif_to_public_key(recovery_private, address_prefix)
270
+ wallet_name = Xgt::Ruby::Auth.generate_wallet_name(recovery_public)
271
+
272
+ keys = generate_keys(wallet_name, recovery_private)
273
+ payload = {
274
+ 'keys' => {
275
+ 'wallet_name' => keys['wallet_name'],
276
+ 'recovery_public' => keys['recovery_public'],
277
+ 'money_public' => keys['money_public'],
278
+ 'social_public' => keys['social_public'],
279
+ 'memo_public' => keys['memo_public'],
280
+ }
281
+ }
282
+ host = ENV['XGT_FIRESTARTER_HOST'] || "http://firestarter.api.xgt.network"
283
+ uri = URI(host + "/wallet")
284
+
285
+ req = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
286
+ req.body = JSON.dump(payload)
287
+
288
+
289
+
290
+ response = Net::HTTP.start(uri.hostname, uri.port) do |http|
291
+ http.request(req)
292
+ end
293
+
294
+ register_miner(keys["wallet_name"], keys["recovery_private"], keys["recovery_public"])
295
+
296
+
297
+ # output_result(response)
298
+ # @last_result = response
299
+ p "sudo docker run --publish 8751:8751 --publish 2001:2001 --env XGT_WALLET=#{keys["wallet_name"]} --env XGT_RECOVERY_PRIVATE_KEY=#{keys["recovery_private"]} --env XGT_HOST=98.33.76.100:2011 rjungemann/xgt:0.0.1"
300
+ output_result({ 'keys' => keys, 'body' => response.body })
301
+
302
+ true
303
+ end
304
+
305
+
306
+ def register_miner(registrant_wallet_name, recovery_private, recovery_public)
307
+ # name = wallet_name.call
308
+ # raise %(Matching wallet named "#{name}" doesn't already exist!) unless name
309
+
310
+ # components = fee.split(' ')
311
+ # decimal = BigDecimal(components.first) * 1
312
+ # final_fee = decimal.truncate.to_s + '.' + sprintf('%03d', (decimal.frac * 1000).truncate) + ' ' + components.last
313
+
314
+ # raise 'Witness already registered!' if does_witness_exist.call
315
+
316
+ txn = {
317
+ 'extensions' => [],
318
+ 'operations' => [{
319
+ 'type' => 'witness_update_operation',
320
+ 'value' => {
321
+ 'owner' => registrant_wallet_name,
322
+ 'url' => 'http://test.host',
323
+ # 'block_signing_key' => keys.call['recovery_public'],
324
+ 'block_signing_key' => recovery_public,
325
+ 'props' => {
326
+ # 'account_creation_fee' => fee,
327
+ # 'wallet_creation_fee' => '0 ',
328
+ 'account_creation_fee' => {"amount":"0","precision":8,"nai":"@@000000021"}
329
+ },
330
+ # 'fee' => final_fee,
331
+ # 'fee' => 0,
332
+ 'fee' => {"amount":"0","precision":8,"nai":"@@000000021"}
333
+ }
334
+ }]
335
+ }
336
+ p txn
337
+ response = rpc.broadcast_transaction(txn, [recovery_private], chain_id)
338
+ p response
339
+ # output_result(response)
340
+ @last_result = response
341
+ true
342
+ # signed = Xgt::Ruby::Auth.sign_transaction(rpc, txn, [keys.call['recovery_private']], chain_id)
343
+ # $stderr.puts(%(Registering witness with recovery private WIF "#{keys.call['recovery_private']}"...))
344
+ # $stderr.puts(%(Signing keypair is #{keys.call['witness_private']} (private) and #{keys.call['witness_public']} (public)...))
345
+ # response = rpc.call('transaction_api.broadcast_transaction', [signed])
346
+ end
347
+
348
+
268
349
  def list_wallets(name=nil)
269
350
  enumerator = Enumerator.new do |yielder|
270
351
  last_name = name
@@ -396,43 +477,43 @@ end
396
477
 
397
478
  def start_console
398
479
  require 'irb'
399
- ARGV.clear
400
- IRB.setup nil
401
-
402
- IRB.conf[:PROMPT] = {}
403
- IRB.conf[:IRB_NAME] = 'wallet'
404
- IRB.conf[:PROMPT][:WALLET] = {
405
- :PROMPT_I => '%N>> ',
406
- :PROMPT_N => '%N>> ',
407
- :PROMPT_S => '%N%l> ',
408
- :PROMPT_C => '%N*> ',
409
- :RETURN => "#=> %s\n"
410
- }
411
- IRB.conf[:PROMPT_MODE] = :WALLET
412
- IRB.conf[:RC] = false
413
-
414
- require 'irb/completion'
415
- require 'irb/ext/save-history'
416
- IRB.conf[:READLINE] = true
417
-
418
- irb = IRB::Irb.new(IRB::WorkSpace.new(self))
419
- IRB.conf[:MAIN_CONTEXT] = irb.context
420
-
421
- trap('SIGINT') do
422
- IRB.irb.signal_handle
423
- end
424
-
425
- begin
426
- catch(:IRB_EXIT) do
427
- irb.eval_input
428
- end
429
- ensure
430
- IRB.irb_at_exit
431
- end
480
+ ARGV.clear
481
+ IRB.setup nil
482
+
483
+ IRB.conf[:PROMPT] = {}
484
+ IRB.conf[:IRB_NAME] = 'wallet'
485
+ IRB.conf[:PROMPT][:WALLET] = {
486
+ :PROMPT_I => '%N>> ',
487
+ :PROMPT_N => '%N>> ',
488
+ :PROMPT_S => '%N%l> ',
489
+ :PROMPT_C => '%N*> ',
490
+ :RETURN => "#=> %s\n"
491
+ }
492
+ IRB.conf[:PROMPT_MODE] = :WALLET
493
+ IRB.conf[:RC] = false
494
+
495
+ require 'irb/completion'
496
+ require 'irb/ext/save-history'
497
+ IRB.conf[:READLINE] = true
498
+
499
+ irb = IRB::Irb.new(IRB::WorkSpace.new(self))
500
+ IRB.conf[:MAIN_CONTEXT] = irb.context
501
+
502
+ trap('SIGINT') do
503
+ IRB.irb.signal_handle
504
+ end
505
+
506
+ begin
507
+ catch(:IRB_EXIT) do
508
+ irb.eval_input
509
+ end
510
+ ensure
511
+ IRB.irb_at_exit
512
+ end
432
513
  end
433
514
 
434
515
  # Allows for this file to be run as a script or loaded as a library.
435
- # if __FILE__ == $0
436
- puts logo
437
- start_console
438
- # end
516
+ if File.basename(__FILE__) == File.basename($0)
517
+ puts logo
518
+ start_console
519
+ end
@@ -1,5 +1,5 @@
1
1
  module Xgt
2
2
  module Ruby
3
- VERSION = '0.1.3'
3
+ VERSION = '0.1.4'
4
4
  end
5
5
  end
data/xgt-ruby.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  # Specify which files should be added to the gem when it is released.
16
16
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
17
17
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
18
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(bin|test|spec|features)/}) }
19
19
  end
20
20
  spec.bindir = 'exe'
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xgt-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roger Jungemann
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-31 00:00:00.000000000 Z
11
+ date: 2021-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -120,13 +120,12 @@ files:
120
120
  - ".rspec"
121
121
  - ".travis.yml"
122
122
  - CODE_OF_CONDUCT.md
123
+ - Dockerfile
123
124
  - Gemfile
124
125
  - Gemfile.lock
125
126
  - LICENSE.txt
126
127
  - README.md
127
128
  - Rakefile
128
- - bin/.wallet.swp
129
- - bin/setup
130
129
  - examples/api/account_by_key_api/get_key_references.rb
131
130
  - examples/api/account_history_api/deprecated/enum_virtual_ops.rb
132
131
  - examples/api/account_history_api/deprecated/get_transaction.rb
@@ -230,7 +229,6 @@ files:
230
229
  - examples/operations/in_progress/escrow_approve.rb
231
230
  - examples/operations/in_progress/witness_set_properties.rb
232
231
  - exe/xgt-wallet
233
- - lib/xgt/.ruby.rb.swp
234
232
  - lib/xgt/ruby.rb
235
233
  - lib/xgt/ruby/version.rb
236
234
  - payloads.txt
@@ -256,7 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
256
254
  - !ruby/object:Gem::Version
257
255
  version: '0'
258
256
  requirements: []
259
- rubygems_version: 3.0.3
257
+ rubygems_version: 3.1.4
260
258
  signing_key:
261
259
  specification_version: 4
262
260
  summary: XGT client library
data/bin/.wallet.swp DELETED
Binary file
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
data/lib/xgt/.ruby.rb.swp DELETED
Binary file