tezos_client 0.2.2 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ffefe0d089bcd17b9465df8a4e4b7409d618679a9578c1458390860019bf0d70
4
- data.tar.gz: a42e73bfeb06305e2036eaeb64aedb8d6f91b87588b80fe250f02539d23a92e9
3
+ metadata.gz: cf7cfaf978c2dca5b86285e1a217f300105d32b2c2eefee695bb5aa22b6991d1
4
+ data.tar.gz: eb40dad0a5e59c144ce891dff73bb2b720f68a75fde86bc021c138c6e93ce1a6
5
5
  SHA512:
6
- metadata.gz: ecc48bac51f93003aeaf99e7b3b18098621d0bf0163c1c8547b4284e36995b76d9955e3bd35b52c608b01c90d961a35db2c89d54cbaa880539633f7b4cd8abd9
7
- data.tar.gz: 5660b04412502fd92d95fc54e411afd7c542cc002b2f5e5e817d359d8fd076ada260284037d5e5cd3e9976142ce941cabfd7d13e0385f01ab36235e3e6cba149
6
+ metadata.gz: 822a1496c0a23271ade02a83ea4fe477a13f3e1e23f3b1209ea1101373c2d6c3718cf26a753135f3a9909efc645fd12de64adf208c715634721d1aa5206036bb
7
+ data.tar.gz: e22294d5a9c55b181d032a5fc2651aaa373866702047a66a404fbb88ecb19cf086264dbb442b707bebf7c7cb75aeefd23025ad5cfa343159a2122cf35b8b9549
data/Gemfile.lock CHANGED
@@ -1,10 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tezos_client (0.2.1)
4
+ tezos_client (0.3.0)
5
5
  activesupport (~> 5.2.0)
6
6
  base58 (~> 0.2.3)
7
+ bip_mnemonic (~> 0.0.2)
7
8
  httparty (~> 0.16.2)
9
+ money-tree (~> 0.10.0)
8
10
  rbnacl (~> 5.0.0)
9
11
  rest-client (~> 2.0.0)
10
12
 
@@ -33,6 +35,7 @@ GEM
33
35
  public_suffix (>= 2.0.2, < 4.0)
34
36
  ast (2.4.0)
35
37
  base58 (0.2.3)
38
+ bip_mnemonic (0.0.2)
36
39
  builder (3.2.3)
37
40
  concurrent-ruby (1.1.4)
38
41
  crack (0.4.3)
@@ -61,6 +64,8 @@ GEM
61
64
  mime-types-data (3.2018.0812)
62
65
  mini_portile2 (2.4.0)
63
66
  minitest (5.11.3)
67
+ money-tree (0.10.0)
68
+ ffi
64
69
  multi_xml (0.6.0)
65
70
  netrc (0.11.0)
66
71
  nokogiri (1.10.0)
data/README.md CHANGED
@@ -28,6 +28,44 @@ Or install it yourself as:
28
28
 
29
29
  ## Usage
30
30
 
31
+ ### Generate Tezos key paris
32
+
33
+ Generate a prefectly random key pair:
34
+ ```ruby
35
+ client = TezosClient.new
36
+ key = subject.generate_key
37
+ expect(key[:address]).to eq "tz1RfnzRopJXH32SSDap2wMYGULBAnmHxdP1"
38
+ # => {
39
+ # :secret_key=>"edsk4T2fHv5RLL3VSXHz82SQiyFx7vZ4wwtA2u67AvAaw5yqNEvuU2",
40
+ # :public_key=>"edpkuncp7KSVhV57Qg7odwhMFcnAHnNrMppbitBPKBfvdg6fFVeNjr",
41
+ # :address=>"tz1a97x7GAvMDyrwwKTLQo131CoidXyUef48"
42
+ # }
43
+ ```
44
+
45
+ Generate a key pair from a seed and a BIP 44 Path:
46
+ ```ruby
47
+ key = subject.generate_key(wallet_seed:"000102030405060708090a0b0c0d0e0f", path: "m/44'/1729'/0'/0'/0'")
48
+ expect(key[:address]).to eq "tz1RfnzRopJXH32SSDap2wMYGULBAnmHxdP1"
49
+ # => {
50
+ # :secret_key=>"edsk4T2fHv5RLL3VSXHz82SQiyFx7vZ4wwtA2u67AvAaw5yqNEvuU2",
51
+ # :public_key=>"edpkuncp7KSVhV57Qg7odwhMFcnAHnNrMppbitBPKBfvdg6fFVeNjr",
52
+ # :address=>"tz1a97x7GAvMDyrwwKTLQo131CoidXyUef48"
53
+ # }
54
+ ```
55
+ Generate a key pair from a BIP-39 mnemonic sentence and a BIP 44 Path:
56
+ ```ruby
57
+ key = subject.generate_key(
58
+ mnemonic: "below dove cushion divide future artefact orange congress maple fiscal flower enable",
59
+ path: "m/44'/1729'/0'/0'/0'")
60
+ expect(key[:address]).to eq "tz1RfnzRopJXH32SSDap2wMYGULBAnmHxdP1"
61
+ # => {
62
+ # :secret_key=>"edsk4T2fHv5RLL3VSXHz82SQiyFx7vZ4wwtA2u67AvAaw5yqNEvuU2",
63
+ # :public_key=>"edpkuncp7KSVhV57Qg7odwhMFcnAHnNrMppbitBPKBfvdg6fFVeNjr",
64
+ # :address=>"tz1a97x7GAvMDyrwwKTLQo131CoidXyUef48"
65
+ # }
66
+ ```
67
+
68
+
31
69
  ### Transfer funds
32
70
 
33
71
  ```ruby
@@ -3,6 +3,8 @@
3
3
  require "base58"
4
4
  require "rbnacl"
5
5
  require "digest"
6
+ require "money-tree"
7
+ require "bip_mnemonic"
6
8
 
7
9
  class TezosClient
8
10
  module Crypto
@@ -108,8 +110,8 @@ class TezosClient
108
110
  encode_tz(:tz1, hex_hash)
109
111
  end
110
112
 
111
- def generate_key
112
- signing_key = RbNaCl::SigningKey.generate.to_bytes.to_hex
113
+ def generate_key(mnemonic: nil, wallet_seed: nil, path: nil)
114
+ signing_key = generate_signing_key(mnemonic: mnemonic, wallet_seed: wallet_seed, path: path).to_bytes.to_hex
113
115
 
114
116
  secret_key = encode_tz(:edsk2, signing_key)
115
117
  public_key = secret_key_to_public_key(secret_key)
@@ -174,5 +176,19 @@ class TezosClient
174
176
  end
175
177
  end
176
178
  end
179
+
180
+ private
181
+ def generate_signing_key(mnemonic: nil, wallet_seed: nil, path: nil)
182
+ if mnemonic
183
+ wallet_seed = BipMnemonic.to_seed(mnemonic: mnemonic)
184
+ end
185
+ if path && wallet_seed
186
+ master = MoneyTree::Master.new seed_hex: wallet_seed
187
+ node = master.node_for_path path
188
+ node.private_key
189
+ else
190
+ RbNaCl::SigningKey.generate
191
+ end
192
+ end
177
193
  end
178
194
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class TezosClient
4
- VERSION = "0.2.2"
4
+ VERSION = "0.3.0"
5
5
  end
data/tezos_client.gemspec CHANGED
@@ -45,4 +45,6 @@ Gem::Specification.new do |spec|
45
45
  spec.add_dependency "rbnacl", "~> 5.0.0"
46
46
  spec.add_dependency "rest-client", "~>2.0.0"
47
47
  spec.add_dependency "activesupport", "~> 5.2.0"
48
+ spec.add_dependency "money-tree", "~> 0.10.0"
49
+ spec.add_dependency "bip_mnemonic", "~> 0.0.2"
48
50
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tezos_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre Michard
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-09 00:00:00.000000000 Z
11
+ date: 2019-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -164,6 +164,34 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: 5.2.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: money-tree
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.10.0
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 0.10.0
181
+ - !ruby/object:Gem::Dependency
182
+ name: bip_mnemonic
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 0.0.2
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 0.0.2
167
195
  description: ''
168
196
  email:
169
197
  - pierre@moneytrack.io