chainpoint 0.0.1 → 0.0.2
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/README.md +35 -17
- data/chainpoint.gemspec +7 -7
- data/lib/chainpoint.rb +33 -9
- data/lib/chainpoint/version.rb +2 -2
- metadata +45 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f82ef5623853c42fb82017bf04dbd39904e7ee6c
|
4
|
+
data.tar.gz: 7c8baf5626b821db7b3a7e77aac7b7e420992d06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b6c23e6b114af3ac5a18346f68e61c75b651222f08fc39ba2a795a96394e531d1b9f4b4022fc86ef1144320644e9a720ce127ab9b8e5f9be69fa7aad2f068d9
|
7
|
+
data.tar.gz: 9096d205c70469d98a2371209c55bcf27d194e9a68fea5c40108f740a5672f63f4e49287720e7b34e1facdd1231768b81f4d41753d1730d59bc5b477793d78c4
|
data/README.md
CHANGED
@@ -22,23 +22,41 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
25
|
+
### Create Instance
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
require 'checkpoint'
|
29
|
+
c = Checkpoint.new
|
30
|
+
```
|
31
|
+
|
32
|
+
### Submit Hash
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
# hash is SHA250
|
36
|
+
# hash = '2fbe59be2be10a4fdeca9c6d3e9f56fc56fb3ee9a8ef2e9be37fced60c264681'
|
37
|
+
c.submit(hash)
|
38
|
+
# => {"meta"=>{"submitted_at"=>"2018-07-24T13:04:35Z", "processing_hints"=>{"cal"=>"2018-07-24T13:04:50Z", "btc"=>"2018-07-24T14:05:35Z"}}, "hashes"=>[{"hash_id_node"=>"1d1aa8a0-8f42-11e8-967f-01a68adfc010", "hash"=>"2fbe59be2be10a4fdeca9c6d3e9f56fc56fb3ee9a8ef2e9be37fced60c264681"}]}
|
39
|
+
```
|
40
|
+
|
41
|
+
Or, use `submit_data`:
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
c.submit("text")
|
45
|
+
```
|
46
|
+
|
47
|
+
### Get Proof
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
c.get_proof(hash_id_node)
|
51
|
+
# => [{"hash_id_node"=>"a50eb4d0-8f20-11e8-8da8-0133565a0e60", "proof"=>"eJyNVMGOHDUQ5SP4BI7MTpXLLtt9Wolf4JTLyC6XmZaWmdF0JyHHhAtH9hMgizYgLkgoR/5jJD6G6tlN0O6ClEN3q22/V69cr+qHd5ey38363fzXdp4P07Bev6SxXeyP36xlW8bdYT/u5vULuplfHfS3rz4u3WzLtD1dul415KquKkLxvamULNxIcw/cxZ5Kqrkk7U7tIMUu2hjEseeEvy80m7Ftdvumpy9KAK2+wSp1BytETavUSloBEgUOBZTh/RkyPa/fjvOsd8hNmf90gHYwrpz/GvIAYQB49pFe9seFPoEXCg/oMxSjl9icBldLeEy/IP+bPjx7V49lJ1udrt/8clWqXv0h5WqzLO2Pm7u9t/vD9Pdnn7/+6er05Vnp2IZPyfL1z/vD7bQtKxf4DD7rWMCfkMNj8I+7cZoHDOS8I/AwtBijbx08Bo1aNUPKDTxV7uQoOQ6JtFLqQcEqlynVXtmD1wa5umhlpViJXER2JTTA0JisotC8OKeVMVgmkaVnAUQObCCreQJK9nos8NJ7xS4ZmIu65ok8lALdfNMFU0mYkodmvkKq3jF5VukSu0fhQFEeEh5Pl4196GjZmi89InaS1LnZr7rQagWDmRhkAo5UpMZumwAVs4+a6hPCnDGbex1LK8Bm94TYcs/dW7ZCuWVEqAGc3S9HbdW4oPvlE13P/ISwphyyL+yT3Wlk5hwqhhTsvq0zavApaFMO6HO09J1a7fpC3RGaRH1CyLFbGTwZh6+lcGzeBIWUk5fMORfruu5IQgZXoZnPzNN9KfkSMj5xTbYUncvxg3GsjAMOH8aEXPw7H5ZxMZj1h3vEWY5YEPOzqki3wKU5cz0hSEiNkwjXDsRm/CKliSegiFhRTf9isPJAzu1dU03X358H0VsL9ut9n43t9j7szfPjOF2fLv5P4tpQumvluL4HrJde/wcFK5lW", "anchors_complete"=>["cal"]}]
|
52
|
+
```
|
53
|
+
|
54
|
+
### Verify
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
c.verify('eJyNVMGOHDUQ5SP4BI7MTpXLLtt9Wolf4JTLyC6XmZaWmdF0JyHHhAtH9hMgizYgLkgoR/5jJD6G6tlN0O6ClEN3q22/V69cr+qHd5ey38363fzXdp4P07Bev6SxXeyP36xlW8bdYT/u5vULuplfHfS3rz4u3WzLtD1dul415KquKkLxvamULNxIcw/cxZ5Kqrkk7U7tIMUu2hjEseeEvy80m7Ftdvumpy9KAK2+wSp1BytETavUSloBEgUOBZTh/RkyPa/fjvOsd8hNmf90gHYwrpz/GvIAYQB49pFe9seFPoEXCg/oMxSjl9icBldLeEy/IP+bPjx7V49lJ1udrt/8clWqXv0h5WqzLO2Pm7u9t/vD9Pdnn7/+6er05Vnp2IZPyfL1z/vD7bQtKxf4DD7rWMCfkMNj8I+7cZoHDOS8I/AwtBijbx08Bo1aNUPKDTxV7uQoOQ6JtFLqQcEqlynVXtmD1wa5umhlpViJXER2JTTA0JisotC8OKeVMVgmkaVnAUQObCCreQJK9nos8NJ7xS4ZmIu65ok8lALdfNMFU0mYkodmvkKq3jF5VukSu0fhQFEeEh5Pl4196GjZmi89InaS1LnZr7rQagWDmRhkAo5UpMZumwAVs4+a6hPCnDGbex1LK8Bm94TYcs/dW7ZCuWVEqAGc3S9HbdW4oPvlE13P/ISwphyyL+yT3Wlk5hwqhhTsvq0zavApaFMO6HO09J1a7fpC3RGaRH1CyLFbGTwZh6+lcGzeBIWUk5fMORfruu5IQgZXoZnPzNN9KfkSMj5xTbYUncvxg3GsjAMOH8aEXPw7H5ZxMZj1h3vEWY5YEPOzqki3wKU5cz0hSEiNkwjXDsRm/CKliSegiFhRTf9isPJAzu1dU03X358H0VsL9ut9n43t9j7szfPjOF2fLv5P4tpQumvluL4HrJde/wcFK5lW')
|
58
|
+
# => [{"proof_index"=>0, "hash"=>"2fbe59be2be10a4fdeca9c6d3e9f56fc56fb3ee9a8ef2e9be37fced60c264681", "hash_id_node"=>"a50eb4d0-8f20-11e8-8da8-0133565a0e60", "hash_submitted_node_at"=>"2018-07-24T09:05:00Z", "hash_id_core"=>"a804c350-8f20-11e8-890a-01c7d2e52ba5", "hash_submitted_core_at"=>"2018-07-24T09:05:05Z", "anchors"=>[{"branch"=>"cal_anchor_branch", "type"=>"cal", "valid"=>true}], "status"=>"verified"}]
|
59
|
+
```
|
42
60
|
|
43
61
|
## Development
|
44
62
|
|
data/chainpoint.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
|
13
13
|
spec.summary = "Chainpoint request library"
|
14
14
|
#spec.description = %q{TODO: Write a longer description or delete this line.}
|
15
|
-
|
15
|
+
spec.homepage = "https://github.com/KenjiOhtsuka/chainpoint_gem"
|
16
16
|
|
17
17
|
spec.add_runtime_dependency "json"
|
18
18
|
|
@@ -21,11 +21,11 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
22
22
|
f.match(%r{^(test|spec|features)/})
|
23
23
|
end
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
spec.bindir = "exe"
|
25
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
|
+
spec.require_paths = ["lib"]
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
spec.add_development_dependency "bundler", "~> 1.16"
|
29
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
30
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
31
31
|
end
|
data/lib/chainpoint.rb
CHANGED
@@ -3,21 +3,30 @@ require "net/https"
|
|
3
3
|
require "json"
|
4
4
|
require "digest"
|
5
5
|
|
6
|
-
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
class Chainpoint
|
7
|
+
def initialize(server_url = nil)
|
8
|
+
if server_url.nil?
|
9
|
+
@server_url = self.class.pickup_server
|
10
|
+
return
|
11
|
+
end
|
12
|
+
@server_url = server_url
|
12
13
|
end
|
13
14
|
|
14
15
|
def self.submit_data(data)
|
16
|
+
self.new().submit_data(data)
|
17
|
+
end
|
18
|
+
|
19
|
+
def submit_data(data)
|
15
20
|
hash = Digest::SHA256.digest(data).unpack('H*')[0]
|
16
21
|
return submit(hash)
|
17
22
|
end
|
18
23
|
|
19
24
|
def self.submit(hash)
|
20
|
-
|
25
|
+
self.new().submit(hash)
|
26
|
+
end
|
27
|
+
|
28
|
+
def submit(hash)
|
29
|
+
uri = URI(@server_url + "/hashes")
|
21
30
|
req = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
|
22
31
|
req.body = {hashes: [hash]}.to_json
|
23
32
|
res = Net::HTTP.start(
|
@@ -29,13 +38,21 @@ module Chainpoint
|
|
29
38
|
end
|
30
39
|
|
31
40
|
def self.get_proof(hash_id_node)
|
32
|
-
|
41
|
+
self.new().get_proof(hash_id_node)
|
42
|
+
end
|
43
|
+
|
44
|
+
def get_proof(hash_id_node)
|
45
|
+
uri = URI(@server_url + '/proofs/' + hash_id_node)
|
33
46
|
r = Net::HTTP.get(uri)
|
34
47
|
return JSON.parse(r)
|
35
48
|
end
|
36
49
|
|
37
50
|
def self.verify(proof)
|
38
|
-
|
51
|
+
self.new().verify(proof)
|
52
|
+
end
|
53
|
+
|
54
|
+
def verify(proof)
|
55
|
+
uri = URI(@server_url + "/verify")
|
39
56
|
req = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
|
40
57
|
req.body = {proofs: [proof]}.to_json
|
41
58
|
res = Net::HTTP.start(
|
@@ -47,6 +64,13 @@ module Chainpoint
|
|
47
64
|
end
|
48
65
|
|
49
66
|
private
|
67
|
+
def self.pickup_server()
|
68
|
+
uri = URI(pickup_node_list_server)
|
69
|
+
r = Net::HTTP.get(uri)
|
70
|
+
j = JSON.parse(r)
|
71
|
+
return j[rand(j.length)]["public_uri"]
|
72
|
+
end
|
73
|
+
|
50
74
|
def self.pickup_node_list_server
|
51
75
|
endpoint_array = [
|
52
76
|
'https://a.chainpoint.org/nodes/random',
|
data/lib/chainpoint/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = "0.0.
|
1
|
+
class Chainpoint
|
2
|
+
VERSION = "0.0.2"
|
3
3
|
end
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chainpoint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenji Ohtsuka
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
11
|
date: 2018-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
@@ -24,6 +24,48 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.16'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.16'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
27
69
|
description:
|
28
70
|
email:
|
29
71
|
- kok.fdcm@gmail.com
|
@@ -42,7 +84,7 @@ files:
|
|
42
84
|
- chainpoint.gemspec
|
43
85
|
- lib/chainpoint.rb
|
44
86
|
- lib/chainpoint/version.rb
|
45
|
-
homepage:
|
87
|
+
homepage: https://github.com/KenjiOhtsuka/chainpoint_gem
|
46
88
|
licenses:
|
47
89
|
- GPL-3.0
|
48
90
|
metadata: {}
|