Class: VoilkRuby::Transaction
- Inherits:
-
Object
- Object
- VoilkRuby::Transaction
show all
- Includes:
- ChainConfig, Utils
- Defined in:
- lib/voilkruby/transaction.rb
Overview
Constant Summary
collapse
- VALID_OPTIONS =
%w(
wif private_key ref_block_num ref_block_prefix expiration
chain use_condenser_namespace
).map(&:to_sym)
Constants included
from ChainConfig
ChainConfig::EXPIRE_IN_SECS, ChainConfig::EXPIRE_IN_SECS_PROPOSAL, ChainConfig::NETWORKS_TEST_ADDRESS_PREFIX, ChainConfig::NETWORKS_TEST_CHAIN_ID, ChainConfig::NETWORKS_TEST_COIN_ASSET, ChainConfig::NETWORKS_TEST_CORE_ASSET, ChainConfig::NETWORKS_TEST_DEBT_ASSET, ChainConfig::NETWORKS_TEST_DEFAULT_NODE, ChainConfig::NETWORKS_VOILK_ADDRESS_PREFIX, ChainConfig::NETWORKS_VOILK_CHAIN_ID, ChainConfig::NETWORKS_VOILK_COIN_ASSET, ChainConfig::NETWORKS_VOILK_CORE_ASSET, ChainConfig::NETWORKS_VOILK_DEBT_ASSET, ChainConfig::NETWORKS_VOILK_DEFAULT_NODE, ChainConfig::NETWORK_CHAIN_IDS
Instance Method Summary
collapse
Methods included from Utils
#debug, #error, #extract_signatures, #hexlify, #pakArr, #pakC, #pakHash, #pakI, #pakL!, #pakS, #pakStr, #pakc, #paks, #send_log, #unhexlify, #varint, #warning
Constructor Details
Returns a new instance of Transaction.
[View source]
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/voilkruby/transaction.rb', line 18
def initialize(options = {})
options = options.dup
options.each do |k, v|
k = k.to_sym
if VALID_OPTIONS.include?(k.to_sym)
options.delete(k)
send("#{k}=", v)
end
end
@chain ||= :voilk
@chain = @chain.to_sym
@chain_id = chain_id options[:chain_id]
@url = options[:url] || url
@operations = options[:operations] || []
@self_logger = false
@logger = if options[:logger].nil?
@self_logger = true
VoilkRuby.logger
else
options[:logger]
end
unless NETWORK_CHAIN_IDS.include? @chain_id
warning "Unknown chain id: #{@chain_id}"
end
if !!wif && !!private_key
raise TransactionError, "Do not pass both wif and private_key. That's confusing."
end
if !!wif
@private_key = Bitcoin::Key.from_base58 wif
end
@ref_block_num ||= nil
@ref_block_prefix ||= nil
@expiration ||= nil
@immutable_expiration = !!@expiration
options = options.merge(
url: @url,
chain: @chain,
pool_size: 1,
persist: false,
reuse_ssl_sessions: false
)
@api = Api.new(options)
@network_broadcast_api = NetworkBroadcastApi.new(options)
@use_condenser_namespace = if options.keys.include? :use_condenser_namespace
options[:use_condenser_namespace]
else
true
end
ObjectSpace.define_finalizer(self, self.class.finalize(@api, @network_broadcast_api, @self_logger, @logger))
end
|
Instance Method Details
permalink
#operations ⇒ Object
[View source]
121
122
123
124
125
126
127
128
|
# File 'lib/voilkruby/transaction.rb', line 121
def operations
@operations = @operations.map do |op|
case op
when Operation then op
else; Operation.new(op)
end
end
end
|
permalink
#operations=(operations) ⇒ Object
[View source]
130
131
132
|
# File 'lib/voilkruby/transaction.rb', line 130
def operations=(operations)
@operations = operations
end
|
permalink
#process(broadcast = false) ⇒ Object
[View source]
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/voilkruby/transaction.rb', line 95
def process(broadcast = false)
prepare
if broadcast
loop do
response = broadcast_payload(payload)
if !!response.error
parser = ErrorParser.new(response)
if parser.can_reprepare?
debug "Error code: #{parser}, repreparing transaction ..."
prepare
redo
end
end
return response
end
else
self
end
ensure
shutdown
end
|
permalink
#shutdown ⇒ Object
[View source]
134
135
136
137
138
139
140
141
142
143
144
145
|
# File 'lib/voilkruby/transaction.rb', line 134
def shutdown
@api.shutdown if !!@api
@network_broadcast_api.shutdown if !!@network_broadcast_api
if @self_logger
if !!@logger && defined?(@logger.close)
if defined?(@logger.closed?)
@logger.close unless @logger.closed?
end
end
end
end
|
permalink
#use_condenser_namespace? ⇒ Boolean
[View source]
147
148
149
|
# File 'lib/voilkruby/transaction.rb', line 147
def use_condenser_namespace?
!!@use_condenser_namespace
end
|