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 +4 -4
- data/Gemfile.lock +6 -1
- data/README.md +38 -0
- data/lib/tezos_client/crypto.rb +18 -2
- data/lib/tezos_client/version.rb +1 -1
- data/tezos_client.gemspec +2 -0
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf7cfaf978c2dca5b86285e1a217f300105d32b2c2eefee695bb5aa22b6991d1
|
4
|
+
data.tar.gz: eb40dad0a5e59c144ce891dff73bb2b720f68a75fde86bc021c138c6e93ce1a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
data/lib/tezos_client/crypto.rb
CHANGED
@@ -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 =
|
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
|
data/lib/tezos_client/version.rb
CHANGED
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.
|
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-
|
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
|