minter 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +925 -6
  3. data/bin/console +6 -5
  4. data/lib/ffi/go/compile.rb +14 -0
  5. data/lib/ffi/transaction_ffi.rb +94 -0
  6. data/lib/ffi/wallet_ffi.rb +16 -0
  7. data/lib/minter.rb +11 -4
  8. data/lib/minter/api/client.rb +53 -0
  9. data/lib/minter/api/connection.rb +50 -0
  10. data/lib/minter/api/errors.rb +18 -0
  11. data/lib/minter/api/resources/address_resource.rb +21 -0
  12. data/lib/minter/api/resources/block_resource.rb +14 -0
  13. data/lib/minter/api/resources/candidate_resource.rb +19 -0
  14. data/lib/minter/api/resources/coin_resource.rb +13 -0
  15. data/lib/minter/api/resources/estimate_resource.rb +31 -0
  16. data/lib/minter/api/resources/events_resource.rb +14 -0
  17. data/lib/minter/api/resources/max_gas_resource.rb +12 -0
  18. data/lib/minter/api/resources/min_gas_price_resource.rb +12 -0
  19. data/lib/minter/api/resources/missed_blocks_resource.rb +13 -0
  20. data/lib/minter/api/resources/nonce_resource.rb +14 -0
  21. data/lib/minter/api/resources/send_transaction_resource.rb +13 -0
  22. data/lib/minter/api/resources/status_resource.rb +12 -0
  23. data/lib/minter/api/resources/transactions_resource.rb +25 -0
  24. data/lib/minter/api/resources/validators_resource.rb +13 -0
  25. data/lib/minter/api/result.rb +54 -0
  26. data/lib/minter/key.rb +29 -0
  27. data/lib/minter/transactions/buy_coin_tx.rb +36 -0
  28. data/lib/minter/transactions/create_coin_tx.rb +40 -0
  29. data/lib/minter/transactions/declare_candidacy_tx.rb +38 -0
  30. data/lib/minter/transactions/delegate_tx.rb +34 -0
  31. data/lib/minter/transactions/edit_candidate_tx.rb +34 -0
  32. data/lib/minter/transactions/redeem_check_tx.rb +32 -0
  33. data/lib/minter/transactions/sell_all_coin_tx.rb +34 -0
  34. data/lib/minter/transactions/sell_coin_tx.rb +36 -0
  35. data/lib/minter/transactions/send_coin_tx.rb +34 -0
  36. data/lib/minter/transactions/set_candidate_off_tx.rb +30 -0
  37. data/lib/minter/transactions/set_candidate_on_tx.rb +30 -0
  38. data/lib/minter/transactions/signed_tx.rb +16 -0
  39. data/lib/minter/transactions/unbond_tx.rb +34 -0
  40. data/lib/minter/version.rb +2 -2
  41. data/lib/minter/wallet.rb +13 -0
  42. metadata +129 -9
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minter
4
+ class SellCoinTx
5
+ attr_accessor :coin_to_sell, :value_to_sell, :coin_to_buy, :minimum_value_to_buy, :nonce, :chain_id, :gas_coin, :gas_price
6
+
7
+ def initialize(coin_to_sell:, value_to_sell:, coin_to_buy:, minimum_value_to_buy:, nonce:, chain_id:, gas_coin:, gas_price:) # rubocop:disable Metrics/ParameterLists
8
+ @coin_to_sell = coin_to_sell
9
+ @value_to_sell = value_to_sell
10
+ @coin_to_buy = coin_to_buy
11
+ @minimum_value_to_buy = minimum_value_to_buy
12
+ @nonce = nonce
13
+ @chain_id = chain_id
14
+ @gas_coin = gas_coin
15
+ @gas_price = gas_price
16
+ end
17
+
18
+ def sign(private_key)
19
+ params = to_params
20
+ params[:PrivateKey] = private_key
21
+ tx_hash = Minter::TransactionFfi.SignSellCoinTransaction(params.to_json)
22
+ SignedTx.new(tx_hash)
23
+ end
24
+
25
+ def to_params
26
+ { CoinToSell: coin_to_sell,
27
+ ValueToSell: value_to_sell,
28
+ CoinToBuy: coin_to_buy,
29
+ MinimumValueToBuy: minimum_value_to_buy,
30
+ Nonce: nonce,
31
+ ChainId: chain_id,
32
+ GasCoin: gas_coin,
33
+ GasPrice: gas_price }
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minter
4
+ class SendCoinTx
5
+ attr_accessor :type, :address_to, :value, :coin, :nonce, :chain_id, :gas_coin, :gas_price
6
+
7
+ def initialize(address_to:, value:, coin:, nonce:, chain_id:, gas_coin:, gas_price:) # rubocop:disable Metrics/ParameterLists
8
+ @address_to = address_to
9
+ @value = value
10
+ @coin = coin
11
+ @nonce = nonce
12
+ @chain_id = chain_id
13
+ @gas_coin = gas_coin
14
+ @gas_price = gas_price
15
+ end
16
+
17
+ def sign(private_key)
18
+ params = to_params
19
+ params[:PrivateKey] = private_key
20
+ tx_hash = Minter::TransactionFfi.SignTransaction(params.to_json)
21
+ SignedTx.new(tx_hash)
22
+ end
23
+
24
+ def to_params
25
+ { AddressTo: address_to,
26
+ Value: value,
27
+ Coin: coin,
28
+ Nonce: nonce,
29
+ ChainId: chain_id,
30
+ GasCoin: gas_coin,
31
+ GasPrice: gas_price }
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minter
4
+ class SetCandidateOffTx
5
+ attr_accessor :pubkey, :nonce, :chain_id, :gas_coin, :gas_price
6
+
7
+ def initialize(pubkey:, nonce:, chain_id:, gas_coin:, gas_price:)
8
+ @pubkey = pubkey
9
+ @nonce = nonce
10
+ @chain_id = chain_id
11
+ @gas_coin = gas_coin
12
+ @gas_price = gas_price
13
+ end
14
+
15
+ def sign(private_key)
16
+ params = to_params
17
+ params[:PrivateKey] = private_key
18
+ tx_hash = Minter::TransactionFfi.SignSetCandidateOffTransaction(params.to_json)
19
+ SignedTx.new(tx_hash)
20
+ end
21
+
22
+ def to_params
23
+ { PubKey: pubkey,
24
+ Nonce: nonce,
25
+ ChainId: chain_id,
26
+ GasCoin: gas_coin,
27
+ GasPrice: gas_price }
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minter
4
+ class SetCandidateOnTx
5
+ attr_accessor :pubkey, :nonce, :chain_id, :gas_coin, :gas_price
6
+
7
+ def initialize(pubkey:, nonce:, chain_id:, gas_coin:, gas_price:)
8
+ @pubkey = pubkey
9
+ @nonce = nonce
10
+ @chain_id = chain_id
11
+ @gas_coin = gas_coin
12
+ @gas_price = gas_price
13
+ end
14
+
15
+ def sign(private_key)
16
+ params = to_params
17
+ params[:PrivateKey] = private_key
18
+ tx_hash = Minter::TransactionFfi.SignSetCandidateOnTransaction(params.to_json)
19
+ SignedTx.new(tx_hash)
20
+ end
21
+
22
+ def to_params
23
+ { PubKey: pubkey,
24
+ Nonce: nonce,
25
+ ChainId: chain_id,
26
+ GasCoin: gas_coin,
27
+ GasPrice: gas_price }
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minter
4
+ class SignedTx
5
+ attr_reader :tx_hash
6
+
7
+ def initialize(tx_hash)
8
+ @tx_hash = tx_hash
9
+ end
10
+
11
+ def send
12
+ # TODO: maybe create client one time
13
+ Minter::Api::Client.new.send_transaction(transaction: tx_hash)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minter
4
+ class UnbondTx
5
+ attr_accessor :pubkey, :coin, :value, :nonce, :chain_id, :gas_coin, :gas_price
6
+
7
+ def initialize(pubkey:, coin:, value:, nonce:, chain_id:, gas_coin:, gas_price:) # rubocop:disable Metrics/ParameterLists
8
+ @pubkey = pubkey
9
+ @coin = coin
10
+ @value = value
11
+ @nonce = nonce
12
+ @chain_id = chain_id
13
+ @gas_coin = gas_coin
14
+ @gas_price = gas_price
15
+ end
16
+
17
+ def sign(private_key)
18
+ params = to_params
19
+ params[:PrivateKey] = private_key
20
+ tx_hash = Minter::TransactionFfi.SignUnbondTransaction(params.to_json)
21
+ SignedTx.new(tx_hash)
22
+ end
23
+
24
+ def to_params
25
+ { PubKey: pubkey,
26
+ Coin: coin,
27
+ Value: value,
28
+ Nonce: nonce,
29
+ ChainId: chain_id,
30
+ GasCoin: gas_coin,
31
+ GasPrice: gas_price }
32
+ end
33
+ end
34
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Minter
4
- VERSION = "0.0.1"
5
- end
4
+ VERSION = "0.0.3"
5
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minter
4
+ class Wallet
5
+ attr_reader :seed, :private_key, :public_key, :mnemonic, :address
6
+ def initialize(_options = {})
7
+ @mnemonic = Minter::WalletFfi.NewMnemonic
8
+ @private_key = Minter::WalletFfi.PrivateKeyFromMnemonic(@mnemonic)
9
+ @public_key = Minter::WalletFfi.PublicKeyFromPrivateKey(@private_key)
10
+ @address = Minter::WalletFfi.AddressFromMnemonic(@mnemonic)
11
+ end
12
+ end
13
+ end
metadata CHANGED
@@ -1,16 +1,100 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Nikolaev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-08 00:00:00.000000000 Z
12
- dependencies: []
13
- description: This is a pure Ruby SDK for working with Minter blockchain
11
+ date: 2020-05-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dotenv
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ffi
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: http
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: json
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: This is a Ruby SDK based on Golang SDK for working with Minter blockchain
14
98
  email:
15
99
  executables: []
16
100
  extensions: []
@@ -21,15 +105,51 @@ files:
21
105
  - README.md
22
106
  - bin/console
23
107
  - bin/setup
108
+ - lib/ffi/go/compile.rb
109
+ - lib/ffi/transaction_ffi.rb
110
+ - lib/ffi/wallet_ffi.rb
24
111
  - lib/minter.rb
112
+ - lib/minter/api/client.rb
113
+ - lib/minter/api/connection.rb
114
+ - lib/minter/api/errors.rb
115
+ - lib/minter/api/resources/address_resource.rb
116
+ - lib/minter/api/resources/block_resource.rb
117
+ - lib/minter/api/resources/candidate_resource.rb
118
+ - lib/minter/api/resources/coin_resource.rb
119
+ - lib/minter/api/resources/estimate_resource.rb
120
+ - lib/minter/api/resources/events_resource.rb
121
+ - lib/minter/api/resources/max_gas_resource.rb
122
+ - lib/minter/api/resources/min_gas_price_resource.rb
123
+ - lib/minter/api/resources/missed_blocks_resource.rb
124
+ - lib/minter/api/resources/nonce_resource.rb
125
+ - lib/minter/api/resources/send_transaction_resource.rb
126
+ - lib/minter/api/resources/status_resource.rb
127
+ - lib/minter/api/resources/transactions_resource.rb
128
+ - lib/minter/api/resources/validators_resource.rb
129
+ - lib/minter/api/result.rb
130
+ - lib/minter/key.rb
131
+ - lib/minter/transactions/buy_coin_tx.rb
132
+ - lib/minter/transactions/create_coin_tx.rb
133
+ - lib/minter/transactions/declare_candidacy_tx.rb
134
+ - lib/minter/transactions/delegate_tx.rb
135
+ - lib/minter/transactions/edit_candidate_tx.rb
136
+ - lib/minter/transactions/redeem_check_tx.rb
137
+ - lib/minter/transactions/sell_all_coin_tx.rb
138
+ - lib/minter/transactions/sell_coin_tx.rb
139
+ - lib/minter/transactions/send_coin_tx.rb
140
+ - lib/minter/transactions/set_candidate_off_tx.rb
141
+ - lib/minter/transactions/set_candidate_on_tx.rb
142
+ - lib/minter/transactions/signed_tx.rb
143
+ - lib/minter/transactions/unbond_tx.rb
25
144
  - lib/minter/version.rb
26
- homepage: https://github.com/MinterTeam/minter-ruby-sdk
145
+ - lib/minter/wallet.rb
146
+ homepage: https://github.com/rubyroid-team/minter
27
147
  licenses:
28
148
  - MIT
29
149
  metadata:
30
- homepage_uri: https://github.com/MinterTeam/minter-ruby-sdk
31
- source_code_uri: https://github.com/nikolaev-dev/minter-ruby-sdk
32
- changelog_uri: https://github.com/MinterTeam/nikolaev-dev/blob/master/CHANGELOG.md
150
+ homepage_uri: https://github.com/rubyroid-team/minter
151
+ source_code_uri: https://github.com/rubyroid-team/minter
152
+ changelog_uri: https://github.com/rubyroid-team/minter/blob/master/CHANGELOG.md
33
153
  post_install_message:
34
154
  rdoc_options: []
35
155
  require_paths:
@@ -48,5 +168,5 @@ requirements: []
48
168
  rubygems_version: 3.0.8
49
169
  signing_key:
50
170
  specification_version: 4
51
- summary: This is a pure Ruby SDK for working with Minter blockchain
171
+ summary: This is a Ruby SDK based on Golang SDK for working with Minter blockchain
52
172
  test_files: []