hyperledger-fabric-sdk 0.1.7 → 0.2.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/LICENSE.txt +1 -1
- data/lib/fabric.rb +6 -25
- data/lib/fabric/block_decoder.rb +8 -8
- data/lib/fabric/client.rb +28 -44
- data/lib/fabric/client_stub.rb +25 -0
- data/lib/fabric/configuration.rb +15 -4
- data/lib/fabric/event_hub.rb +14 -17
- data/lib/fabric/fabric_logger.rb +4 -4
- data/lib/fabric/helper.rb +1 -1
- data/lib/fabric/identity.rb +2 -1
- data/lib/fabric/orderer.rb +3 -17
- data/lib/fabric/peer.rb +3 -21
- data/lib/fabric/proposal.rb +7 -4
- data/lib/fabric/transaction.rb +2 -3
- data/lib/fabric/transaction_info.rb +5 -6
- data/lib/fabric/version.rb +1 -1
- data/lib/fabric_ca.rb +6 -0
- data/lib/fabric_ca/configuration.rb +4 -0
- data/lib/fabric_ca/faraday_middleware/raise_http_exception.rb +1 -4
- data/lib/fabric_ca/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1adb2476b322a3f58f95a51a5faef139b215c1b1ad0c87573def1ac041cf94b3
|
4
|
+
data.tar.gz: efe5b6c77982cadeaaa54e0c02f0ae6c68e7c0b7b699dd35af98f624db7d5cc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2830cee92fc0691272e115e2b61063e6e843c5f634cc82d55b2420e830263929ea76765c9d6aafc78c3baea525ce1c89ee3617860d7720ecc8d9241472a7f5c
|
7
|
+
data.tar.gz: e7b2e165c001a71114d58c9ffb65cabdfa5fd69b881afb8df51f579c38d698c20ba5aed45059c9beb8deb27d53d9218d899b05f193f3011c75c778577986d113
|
data/LICENSE.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2019 Bryan Padron
|
3
|
+
Copyright (c) 2019 Alexandr Kirshin, Bryan Padron
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/lib/fabric.rb
CHANGED
@@ -12,6 +12,7 @@ require_relative 'fabric/version'
|
|
12
12
|
require_relative 'fabric/configuration'
|
13
13
|
require_relative 'fabric/constants'
|
14
14
|
require_relative 'fabric/client'
|
15
|
+
require_relative 'fabric/client_stub'
|
15
16
|
require_relative 'fabric/peer'
|
16
17
|
require_relative 'fabric/orderer'
|
17
18
|
require_relative 'fabric/enumerator_queue'
|
@@ -22,7 +23,6 @@ require_relative 'fabric/transaction'
|
|
22
23
|
require_relative 'fabric/error'
|
23
24
|
require_relative 'fabric/fabric_logger'
|
24
25
|
require_relative 'fabric/chaincode_response'
|
25
|
-
require_relative 'fabric/channel'
|
26
26
|
require_relative 'fabric/transaction_info'
|
27
27
|
require_relative 'fabric/helper'
|
28
28
|
require_relative 'fabric/block_decoder'
|
@@ -30,42 +30,23 @@ require_relative 'fabric/event_hub'
|
|
30
30
|
|
31
31
|
module Fabric
|
32
32
|
extend Configuration
|
33
|
-
@orderers = []
|
34
|
-
@peers = []
|
35
33
|
|
36
34
|
def self.new(config)
|
37
|
-
|
38
|
-
|
35
|
+
assign(config)
|
36
|
+
|
39
37
|
self
|
40
38
|
end
|
41
39
|
|
42
40
|
def self.client(opts = {})
|
43
41
|
client = Fabric::Client.new opts
|
44
42
|
|
45
|
-
|
46
|
-
|
43
|
+
orderers.each { |config| client.register_orderer config }
|
44
|
+
peers.each { |config| client.register_peer config }
|
45
|
+
event_hubs.each { |config| client.register_event_hub config }
|
47
46
|
|
48
47
|
client
|
49
48
|
end
|
50
49
|
|
51
|
-
def self.channel(opts = {})
|
52
|
-
channel = Fabric::Channel.new opts
|
53
|
-
|
54
|
-
@orderers.each { |url| channel.register_orderer url, opts }
|
55
|
-
@peers.each { |url| channel.register_peer url, opts }
|
56
|
-
|
57
|
-
channel
|
58
|
-
end
|
59
|
-
|
60
|
-
def self.event_hub(opts = {})
|
61
|
-
options = Fabric.options.merge opts
|
62
|
-
|
63
|
-
options[:crypto_suite] ||= Fabric.crypto_suite
|
64
|
-
options[:url] = options[:event_hub_url]
|
65
|
-
|
66
|
-
Fabric::EventHub.new options
|
67
|
-
end
|
68
|
-
|
69
50
|
def self.crypto_suite(opts = {})
|
70
51
|
@crypto_suite ||= Fabric::CryptoSuite.new opts
|
71
52
|
end
|
data/lib/fabric/block_decoder.rb
CHANGED
@@ -122,7 +122,7 @@ module Fabric
|
|
122
122
|
def self.decode_payload_header_extension(extension_data)
|
123
123
|
return unless extension_data
|
124
124
|
|
125
|
-
Protos::ChaincodeHeaderExtension.decode(extension_data)
|
125
|
+
Protos::ChaincodeHeaderExtension.decode(extension_data)
|
126
126
|
end
|
127
127
|
|
128
128
|
def self.decode_signature_header(signature_header_data)
|
@@ -186,13 +186,13 @@ module Fabric
|
|
186
186
|
end
|
187
187
|
|
188
188
|
def self.decode_chaincode_proposal_payload_input(input_data)
|
189
|
-
Protos::ChaincodeInvocationSpec.decode(input_data)
|
189
|
+
Protos::ChaincodeInvocationSpec.decode(input_data)
|
190
190
|
end
|
191
191
|
|
192
192
|
def self.decode_chaincode_input(input_data)
|
193
193
|
proto_chaincode_input = Protos::ChaincodeInput.decode input_data
|
194
194
|
|
195
|
-
proto_chaincode_input
|
195
|
+
proto_chaincode_input
|
196
196
|
end
|
197
197
|
|
198
198
|
def self.decode_chaincode_endorsed_action(proto_action)
|
@@ -263,7 +263,7 @@ module Fabric
|
|
263
263
|
end
|
264
264
|
|
265
265
|
def self.decode_kv_rw_set(rwset_data)
|
266
|
-
Kvrwset::KVRWSet.decode(rwset_data)
|
266
|
+
Kvrwset::KVRWSet.decode(rwset_data)
|
267
267
|
end
|
268
268
|
|
269
269
|
def self.decode_collection_hashed_rw_set(proto_collection_hashed_rwset)
|
@@ -277,23 +277,23 @@ module Fabric
|
|
277
277
|
end
|
278
278
|
|
279
279
|
def self.decode_hashed_rwset(hashed_rwset_data)
|
280
|
-
Rwset::HashedRWSet.decode(hashed_rwset_data)
|
280
|
+
Rwset::HashedRWSet.decode(hashed_rwset_data)
|
281
281
|
end
|
282
282
|
|
283
283
|
def self.decode_chaincode_events(event_data)
|
284
|
-
Protos::ChaincodeEvent.decode(event_data)
|
284
|
+
Protos::ChaincodeEvent.decode(event_data)
|
285
285
|
end
|
286
286
|
|
287
287
|
def self.decode_response(proposal_response)
|
288
288
|
return unless proposal_response
|
289
289
|
|
290
|
-
proposal_response
|
290
|
+
proposal_response
|
291
291
|
end
|
292
292
|
|
293
293
|
def self.decode_chaincode_id(chaincode_id)
|
294
294
|
return unless chaincode_id
|
295
295
|
|
296
|
-
chaincode_id
|
296
|
+
chaincode_id
|
297
297
|
end
|
298
298
|
end
|
299
299
|
end
|
data/lib/fabric/client.rb
CHANGED
@@ -1,35 +1,48 @@
|
|
1
1
|
module Fabric
|
2
2
|
class Client
|
3
|
-
attr_reader :identity, :
|
4
|
-
:orderers, :peers, :logger
|
5
|
-
|
6
|
-
MAX_ATTEMPTS_CHECK_TRANSACTION = 20
|
7
|
-
DELAY_PERIOD_CHECK_TRANSACTION = 2
|
3
|
+
attr_reader :identity, :orderers, :peers, :event_hubs, :logger
|
8
4
|
|
9
5
|
def initialize(opts = {})
|
10
6
|
options = Fabric.options.merge opts
|
11
7
|
|
12
8
|
@logger = FabricLogger.new options[:logger], options[:logger_filters]
|
13
9
|
@identity = options[:identity]
|
14
|
-
@crypto_suite = options[:crypto_suite]
|
15
10
|
end
|
16
11
|
|
17
|
-
def register_peer(
|
12
|
+
def register_peer(options, extra_options = {})
|
18
13
|
@peers ||= []
|
19
14
|
|
20
|
-
|
15
|
+
options = { host: options } if options.is_a?(String)
|
16
|
+
extra_options.merge!(options)
|
17
|
+
extra_options.merge!(logger: logger)
|
18
|
+
|
19
|
+
@peers << Peer.new(extra_options[:host], extra_options[:creds], extra_options)
|
21
20
|
end
|
22
21
|
|
23
|
-
def register_orderer(
|
22
|
+
def register_orderer(options, extra_options = {})
|
24
23
|
@orderers ||= []
|
25
24
|
|
26
|
-
|
25
|
+
options = { host: options } if options.is_a?(String)
|
26
|
+
extra_options.merge!(options)
|
27
|
+
extra_options.merge!(logger: logger)
|
28
|
+
|
29
|
+
@orderers << Orderer.new(extra_options[:host], extra_options[:creds], extra_options)
|
30
|
+
end
|
31
|
+
|
32
|
+
def register_event_hub(options, extra_options = {})
|
33
|
+
@event_hubs ||= []
|
34
|
+
|
35
|
+
options = { host: options } if options.is_a?(String)
|
36
|
+
extra_options.merge!(options)
|
37
|
+
extra_options.merge!(logger: logger)
|
38
|
+
|
39
|
+
@event_hubs << EventHub.new(extra_options[:host], extra_options[:creds], extra_options)
|
27
40
|
end
|
28
41
|
|
29
42
|
def query(request = {})
|
30
43
|
logging __method__, request
|
31
44
|
|
32
|
-
proposal = Proposal.new
|
45
|
+
proposal = Proposal.new identity, request
|
33
46
|
|
34
47
|
send_query(proposal) { |response| parse_chaincode_response response.response }
|
35
48
|
end
|
@@ -37,16 +50,17 @@ module Fabric
|
|
37
50
|
def invoke(request = {})
|
38
51
|
logging __method__, request
|
39
52
|
|
40
|
-
proposal = Proposal.new
|
53
|
+
proposal = Proposal.new identity, request
|
41
54
|
|
42
55
|
responses = send_query(proposal) { |response| parse_peer_response response }
|
43
56
|
|
44
|
-
transaction = Transaction.new
|
45
|
-
responses: responses
|
57
|
+
transaction = Transaction.new identity, proposal: proposal, responses: responses
|
46
58
|
|
47
59
|
send_transaction(transaction) { |response| parse_orderer_response response }
|
48
60
|
|
49
61
|
responses.map { |response| parse_chaincode_response response.response }
|
62
|
+
|
63
|
+
transaction
|
50
64
|
end
|
51
65
|
|
52
66
|
private
|
@@ -67,36 +81,6 @@ module Fabric
|
|
67
81
|
payload: payload.to_proto
|
68
82
|
|
69
83
|
orderers.each { |orderer| orderer.send_broadcast envelope, &block }
|
70
|
-
|
71
|
-
check_transaction transaction
|
72
|
-
end
|
73
|
-
|
74
|
-
def check_transaction(transaction)
|
75
|
-
MAX_ATTEMPTS_CHECK_TRANSACTION.times do
|
76
|
-
begin
|
77
|
-
validation_code = get_transaction_validation_code transaction
|
78
|
-
|
79
|
-
logging __method__, tx_id: transaction.tx_id, status: validation_code
|
80
|
-
|
81
|
-
return validation_code if validation_code == :VALID
|
82
|
-
|
83
|
-
raise Fabric::TransactionError, validation_code
|
84
|
-
rescue UnknownError => ex
|
85
|
-
sleep DELAY_PERIOD_CHECK_TRANSACTION
|
86
|
-
|
87
|
-
logger.debug ex.message
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def get_transaction_validation_code(transaction)
|
93
|
-
channel_id = transaction.proposal.channel_id
|
94
|
-
responses = query channel_id: channel_id,
|
95
|
-
chaincode_id: 'qscc',
|
96
|
-
args: ['GetTransactionByID', channel_id, transaction.tx_id]
|
97
|
-
processed_transaction = Protos::ProcessedTransaction.decode responses.first
|
98
|
-
|
99
|
-
Protos::TxValidationCode.lookup processed_transaction.validationCode
|
100
84
|
end
|
101
85
|
|
102
86
|
def parse_chaincode_response(response)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Fabric
|
2
|
+
class ClientStub
|
3
|
+
attr_reader :host, :creds, :options, :logger
|
4
|
+
|
5
|
+
VALID_OPTIONS_KEYS = %i[channel_override timeout propagate_mask channel_args interceptors]
|
6
|
+
|
7
|
+
def initialize(host, creds, options = {})
|
8
|
+
@host = host
|
9
|
+
@logger = options[:logger]
|
10
|
+
|
11
|
+
@creds = GRPC::Core::ChannelCredentials.new(creds) if creds.is_a?(String)
|
12
|
+
@creds ||= :this_channel_is_insecure
|
13
|
+
|
14
|
+
@options = options.slice(*VALID_OPTIONS_KEYS)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def logging(section, message)
|
20
|
+
logger.debug section.to_s.upcase.colorize(:yellow),
|
21
|
+
host.colorize(:red),
|
22
|
+
message.to_s.colorize(:blue)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/fabric/configuration.rb
CHANGED
@@ -3,9 +3,13 @@ module Fabric
|
|
3
3
|
DEFAULT_TIMEOUT = 30
|
4
4
|
|
5
5
|
VALID_OPTIONS_KEYS = %i[
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
orderers
|
7
|
+
peers
|
8
|
+
event_hubs
|
9
|
+
identity
|
10
|
+
timeout
|
11
|
+
logger
|
12
|
+
logger_filters
|
9
13
|
].freeze
|
10
14
|
|
11
15
|
VALID_OPTIONS_KEYS.each { |attr| attr_accessor attr }
|
@@ -14,7 +18,7 @@ module Fabric
|
|
14
18
|
base.reset
|
15
19
|
end
|
16
20
|
|
17
|
-
def
|
21
|
+
def configure
|
18
22
|
yield self
|
19
23
|
end
|
20
24
|
|
@@ -27,7 +31,14 @@ module Fabric
|
|
27
31
|
def reset
|
28
32
|
VALID_OPTIONS_KEYS.each { |key| send("#{key}=", nil) }
|
29
33
|
|
34
|
+
self.orderers = []
|
35
|
+
self.peers = []
|
36
|
+
self.event_hubs = []
|
30
37
|
self.timeout = DEFAULT_TIMEOUT
|
31
38
|
end
|
39
|
+
|
40
|
+
def assign(config)
|
41
|
+
VALID_OPTIONS_KEYS.each { |key| send("#{key}=", config[key]) if config.key?(key) }
|
42
|
+
end
|
32
43
|
end
|
33
44
|
end
|
data/lib/fabric/event_hub.rb
CHANGED
@@ -1,25 +1,22 @@
|
|
1
1
|
module Fabric
|
2
|
-
class EventHub
|
3
|
-
|
4
|
-
attr_reader :channel, :connection, :queue
|
2
|
+
class EventHub < ClientStub
|
3
|
+
MAX_BLOCK_NUMBER = 4_611_686_018_427_387_903.freeze
|
5
4
|
|
6
|
-
|
5
|
+
def client
|
6
|
+
@client ||= ::Protos::Deliver::Stub.new host, creds, options
|
7
|
+
end
|
7
8
|
|
8
|
-
def
|
9
|
-
@
|
10
|
-
|
11
|
-
@crypto_suite = opts[:crypto_suite]
|
12
|
-
@logger = opts[:logger]
|
13
|
-
@channel_id = opts[:channel_id]
|
9
|
+
def queue
|
10
|
+
@queue ||= Fabric::EnumeratorQueue.new client
|
11
|
+
end
|
14
12
|
|
15
|
-
|
16
|
-
@
|
17
|
-
@connection = channel.deliver(queue.each).each
|
13
|
+
def connection
|
14
|
+
@connection ||= client.deliver(queue.each).each
|
18
15
|
end
|
19
16
|
|
20
|
-
def observe(start_block = :newest, stop_block = MAX_BLOCK_NUMBER)
|
21
|
-
tx_info = Fabric::TransactionInfo.new
|
22
|
-
seek_header = build_seek_header tx_info
|
17
|
+
def observe(channel_id, identity, start_block = :newest, stop_block = MAX_BLOCK_NUMBER)
|
18
|
+
tx_info = Fabric::TransactionInfo.new identity
|
19
|
+
seek_header = build_seek_header channel_id, tx_info
|
23
20
|
seek_info = build_seek_info start_block, stop_block
|
24
21
|
envelope = build_envelope tx_info, seek_header, seek_info
|
25
22
|
|
@@ -46,7 +43,7 @@ module Fabric
|
|
46
43
|
payload: seek_payload.to_proto
|
47
44
|
end
|
48
45
|
|
49
|
-
def build_seek_header(tx_info)
|
46
|
+
def build_seek_header(channel_id, tx_info)
|
50
47
|
seek_info_header = Fabric::Helper.build_channel_header(
|
51
48
|
type: ::Common::HeaderType::DELIVER_SEEK_INFO,
|
52
49
|
channel_id: channel_id,
|
data/lib/fabric/fabric_logger.rb
CHANGED
@@ -7,25 +7,25 @@ module Fabric
|
|
7
7
|
|
8
8
|
def initialize(logger, filters = [])
|
9
9
|
@logger = logger
|
10
|
-
@filters = [filters]
|
10
|
+
@filters = [filters].compact
|
11
11
|
end
|
12
12
|
|
13
13
|
def error(*args)
|
14
14
|
return unless logger
|
15
15
|
|
16
|
-
logger.
|
16
|
+
logger.error filter_message(args.join('|'))
|
17
17
|
end
|
18
18
|
|
19
19
|
def info(*args)
|
20
20
|
return unless logger
|
21
21
|
|
22
|
-
logger.
|
22
|
+
logger.info filter_message(args.join('|'))
|
23
23
|
end
|
24
24
|
|
25
25
|
def debug(*args)
|
26
26
|
return unless logger
|
27
27
|
|
28
|
-
logger.
|
28
|
+
logger.debug filter_message(args.join('|'))
|
29
29
|
end
|
30
30
|
|
31
31
|
private
|
data/lib/fabric/helper.rb
CHANGED
data/lib/fabric/identity.rb
CHANGED
data/lib/fabric/orderer.rb
CHANGED
@@ -1,15 +1,9 @@
|
|
1
1
|
require 'orderer/ab_services_pb.rb'
|
2
2
|
|
3
3
|
module Fabric
|
4
|
-
class Orderer
|
5
|
-
|
6
|
-
|
7
|
-
def initialize(args)
|
8
|
-
@url = args[:url]
|
9
|
-
@opts = args[:opts]
|
10
|
-
@logger = args[:logger]
|
11
|
-
|
12
|
-
@client = ::Orderer::AtomicBroadcast::Stub.new url, :this_channel_is_insecure
|
4
|
+
class Orderer < ClientStub
|
5
|
+
def client
|
6
|
+
@client ||= ::Orderer::AtomicBroadcast::Stub.new host, creds, options
|
13
7
|
end
|
14
8
|
|
15
9
|
def send_broadcast(envelope)
|
@@ -23,13 +17,5 @@ module Fabric
|
|
23
17
|
yield response if block_given?
|
24
18
|
end
|
25
19
|
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def logging(section, message)
|
30
|
-
logger.debug section.to_s.upcase,
|
31
|
-
url,
|
32
|
-
message.to_s
|
33
|
-
end
|
34
20
|
end
|
35
21
|
end
|
data/lib/fabric/peer.rb
CHANGED
@@ -1,15 +1,9 @@
|
|
1
1
|
require 'peer/peer_services_pb'
|
2
2
|
|
3
3
|
module Fabric
|
4
|
-
class Peer
|
5
|
-
|
6
|
-
|
7
|
-
def initialize(args)
|
8
|
-
@url = args[:url]
|
9
|
-
@opts = args[:opts]
|
10
|
-
@logger = args[:logger]
|
11
|
-
|
12
|
-
@client = Protos::Endorser::Stub.new url, :this_channel_is_insecure
|
4
|
+
class Peer < ClientStub
|
5
|
+
def client
|
6
|
+
@client ||= Protos::Endorser::Stub.new(host, creds, options)
|
13
7
|
end
|
14
8
|
|
15
9
|
def send_process_proposal(proposal)
|
@@ -21,17 +15,5 @@ module Fabric
|
|
21
15
|
|
22
16
|
response
|
23
17
|
end
|
24
|
-
|
25
|
-
def create_event_hub
|
26
|
-
EventHub.new url: url, opts: opts, logger: logger
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def logging(section, message)
|
32
|
-
logger.debug section.to_s.upcase,
|
33
|
-
url,
|
34
|
-
message.to_s
|
35
|
-
end
|
36
18
|
end
|
37
19
|
end
|
data/lib/fabric/proposal.rb
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
module Fabric
|
2
2
|
class Proposal
|
3
|
-
attr_reader :
|
3
|
+
attr_reader :identity, :request
|
4
4
|
|
5
|
-
def initialize(
|
6
|
-
@crypto_suite = crypto_suite
|
5
|
+
def initialize(identity, request = {})
|
7
6
|
@identity = identity
|
8
7
|
@request = request
|
9
8
|
|
10
9
|
assign_tx request[:transaction_info] if request[:transaction_info]
|
11
10
|
end
|
12
11
|
|
12
|
+
def crypto_suite
|
13
|
+
identity.crypto_suite
|
14
|
+
end
|
15
|
+
|
13
16
|
def nonce
|
14
17
|
@nonce ||= crypto_suite.generate_nonce
|
15
18
|
end
|
@@ -70,7 +73,7 @@ module Fabric
|
|
70
73
|
end
|
71
74
|
|
72
75
|
def tx_timestamp
|
73
|
-
now = Time.
|
76
|
+
now = Time.now
|
74
77
|
|
75
78
|
@tx_timestamp ||= Google::Protobuf::Timestamp.new seconds: now.to_i, nanos: now.nsec
|
76
79
|
end
|
data/lib/fabric/transaction.rb
CHANGED
@@ -2,10 +2,9 @@ require 'peer/transaction_pb'
|
|
2
2
|
|
3
3
|
module Fabric
|
4
4
|
class Transaction
|
5
|
-
attr_reader :
|
5
|
+
attr_reader :identity, :request
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@crypto_suite = crypto_suite
|
7
|
+
def initialize(identity, request = {})
|
9
8
|
@identity = identity
|
10
9
|
@request = request
|
11
10
|
end
|
@@ -1,16 +1,15 @@
|
|
1
1
|
module Fabric
|
2
2
|
class TransactionInfo
|
3
|
-
attr_reader :tx_id, :nonce, :
|
3
|
+
attr_reader :tx_id, :nonce, :identity
|
4
4
|
|
5
|
-
def initialize(
|
5
|
+
def initialize(identity)
|
6
6
|
@identity = identity
|
7
|
-
@nonce = crypto_suite.generate_nonce
|
8
|
-
@tx_id = crypto_suite.hexdigest(nonce + identity.serialize)
|
9
|
-
@crypto_suite = crypto_suite
|
7
|
+
@nonce = identity.crypto_suite.generate_nonce
|
8
|
+
@tx_id = identity.crypto_suite.hexdigest(nonce + identity.serialize)
|
10
9
|
end
|
11
10
|
|
12
11
|
def nonce_hex
|
13
|
-
crypto_suite.encode_hex nonce
|
12
|
+
identity.crypto_suite.encode_hex nonce
|
14
13
|
end
|
15
14
|
|
16
15
|
def signature_header
|
data/lib/fabric/version.rb
CHANGED
data/lib/fabric_ca.rb
CHANGED
@@ -3,9 +3,6 @@ require 'faraday'
|
|
3
3
|
module FabricCA
|
4
4
|
module FaradayMiddleware
|
5
5
|
class RaiseHttpException < Faraday::Middleware
|
6
|
-
## Variables
|
7
|
-
LOGGER_TAG = 'FABRIC CA'.freeze
|
8
|
-
|
9
6
|
## Attributes
|
10
7
|
attr_reader :app, :logger
|
11
8
|
|
@@ -40,7 +37,7 @@ module FabricCA
|
|
40
37
|
def logging(message)
|
41
38
|
return unless logger
|
42
39
|
|
43
|
-
logger.
|
40
|
+
logger.error message
|
44
41
|
end
|
45
42
|
end
|
46
43
|
end
|
data/lib/fabric_ca/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyperledger-fabric-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexandr Kirshin(kirshin)
|
@@ -139,6 +139,7 @@ files:
|
|
139
139
|
- lib/fabric/chaincode_response.rb
|
140
140
|
- lib/fabric/channel.rb
|
141
141
|
- lib/fabric/client.rb
|
142
|
+
- lib/fabric/client_stub.rb
|
142
143
|
- lib/fabric/configuration.rb
|
143
144
|
- lib/fabric/constants.rb
|
144
145
|
- lib/fabric/crypto_suite.rb
|