tezos_client 0.2.2 → 0.3.0

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: 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