Class: Stellar::Transaction
- Inherits:
-
XDR::Struct
- Object
- XDR::Struct
- Stellar::Transaction
- Includes:
- XDR::Namespace
- Defined in:
- lib/stellar/transaction.rb,
generated/stellar/transaction.rb,
generated/stellar/transaction/ext.rb
Defined Under Namespace
Classes: Ext
Class Method Summary collapse
- .account_merge(attributes = {}) ⇒ Object
- .allow_trust(attributes = {}) ⇒ Object
- .change_trust(attributes = {}) ⇒ Object
- .create_account(attributes = {}) ⇒ Object
- .create_passive_offer(attributes = {}) ⇒ Object
-
.for_account(attributes = {}) ⇒ Stellar::Transaction
Helper method to create the skeleton of a transaction.
- .inflation(attributes = {}) ⇒ Object
-
.make(operation_type, attributes = {}) ⇒ Stellar::Transaction
Helper method to create a transaction with a single operation of the provided type.
- .manage_offer(attributes = {}) ⇒ Object
- .path_payment(attributes = {}) ⇒ Object
- .payment(attributes = {}) ⇒ Object
- .set_options(attributes = {}) ⇒ Object
Instance Method Summary collapse
- #apply_defaults ⇒ Object
- #hash ⇒ Object
- #merge(other) ⇒ Object
- #sign(key_pair) ⇒ Object
- #sign_decorated(key_pair) ⇒ Object
-
#signature_base ⇒ Object
Returns the string of bytes that, when hashed, provide the value which should be signed to create a valid stellar transaciton signature.
- #signature_base_prefix ⇒ Object
- #to_envelope(*key_pairs) ⇒ Object
-
#to_operations ⇒ Array<Operation>
Extracts the operations from this single transaction, setting the source account on the extracted operations.
Class Method Details
.account_merge(attributes = {}) ⇒ Object
54 55 56 |
# File 'lib/stellar/transaction.rb', line 54 def self.account_merge(attributes={}) make :account_merge, attributes end |
.allow_trust(attributes = {}) ⇒ Object
48 49 50 |
# File 'lib/stellar/transaction.rb', line 48 def self.allow_trust(attributes={}) make :allow_trust, attributes end |
.change_trust(attributes = {}) ⇒ Object
24 25 26 |
# File 'lib/stellar/transaction.rb', line 24 def self.change_trust(attributes={}) make :change_trust, attributes end |
.create_account(attributes = {}) ⇒ Object
18 19 20 |
# File 'lib/stellar/transaction.rb', line 18 def self.create_account(attributes={}) make :create_account, attributes end |
.create_passive_offer(attributes = {}) ⇒ Object
36 37 38 |
# File 'lib/stellar/transaction.rb', line 36 def self.create_passive_offer(attributes={}) make :create_passive_offer, attributes end |
.for_account(attributes = {}) ⇒ Stellar::Transaction
Helper method to create the skeleton of a transaction. The resulting transaction will have its source account, sequence, fee, min ledger and max ledger set.
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/stellar/transaction.rb', line 92 def self.for_account(attributes={}) account = attributes[:account] sequence = attributes[:sequence] fee = attributes[:fee] raise ArgumentError, "Bad :account" unless account.is_a?(KeyPair) && account.sign? raise ArgumentError, "Bad :sequence #{sequence}" unless sequence.is_a?(Integer) raise ArgumentError, "Bad :fee #{sequence}" if fee.present? && !fee.is_a?(Integer) new.tap do |result| result.seq_num = sequence result.fee = fee result.source_account = account.account_id result.apply_defaults end end |
.inflation(attributes = {}) ⇒ Object
60 61 62 |
# File 'lib/stellar/transaction.rb', line 60 def self.inflation(attributes={}) make :inflation, attributes end |
.make(operation_type, attributes = {}) ⇒ Stellar::Transaction
Helper method to create a transaction with a single operation of the provided type. See class methods on Stellar::Operation for available values for operation_type.
76 77 78 79 80 |
# File 'lib/stellar/transaction.rb', line 76 def self.make(operation_type, attributes={}) for_account(attributes).tap do |result| result.operations << Operation.send(operation_type, attributes) end end |
.manage_offer(attributes = {}) ⇒ Object
30 31 32 |
# File 'lib/stellar/transaction.rb', line 30 def self.manage_offer(attributes={}) make :manage_offer, attributes end |
.path_payment(attributes = {}) ⇒ Object
12 13 14 |
# File 'lib/stellar/transaction.rb', line 12 def self.path_payment(attributes={}) make :path_payment, attributes end |
.payment(attributes = {}) ⇒ Object
6 7 8 |
# File 'lib/stellar/transaction.rb', line 6 def self.payment(attributes={}) make :payment, attributes end |
.set_options(attributes = {}) ⇒ Object
42 43 44 |
# File 'lib/stellar/transaction.rb', line 42 def self.(attributes={}) make :set_options, attributes end |
Instance Method Details
#apply_defaults ⇒ Object
163 164 165 166 167 168 |
# File 'lib/stellar/transaction.rb', line 163 def apply_defaults self.operations ||= [] self.fee ||= 100 self.memo ||= Memo.new(:memo_none) self.ext ||= Stellar::Transaction::Ext.new 0 end |
#hash ⇒ Object
117 118 119 |
# File 'lib/stellar/transaction.rb', line 117 def hash Digest::SHA256.digest(signature_base) end |
#merge(other) ⇒ Object
142 143 144 145 146 |
# File 'lib/stellar/transaction.rb', line 142 def merge(other) cloned = Marshal.load Marshal.dump(self) cloned.operations += other.to_operations cloned end |
#sign(key_pair) ⇒ Object
109 110 111 |
# File 'lib/stellar/transaction.rb', line 109 def sign(key_pair) key_pair.sign(hash) end |
#sign_decorated(key_pair) ⇒ Object
113 114 115 |
# File 'lib/stellar/transaction.rb', line 113 def sign_decorated(key_pair) key_pair.sign_decorated(hash) end |
#signature_base ⇒ Object
Returns the string of bytes that, when hashed, provide the value which should be signed to create a valid stellar transaciton signature
123 124 125 |
# File 'lib/stellar/transaction.rb', line 123 def signature_base signature_base_prefix + to_xdr end |
#signature_base_prefix ⇒ Object
127 128 129 130 131 |
# File 'lib/stellar/transaction.rb', line 127 def signature_base_prefix val = Stellar::EnvelopeType.envelope_type_tx Stellar.current_network_id + Stellar::EnvelopeType.to_xdr(val) end |
#to_envelope(*key_pairs) ⇒ Object
133 134 135 136 137 138 139 140 |
# File 'lib/stellar/transaction.rb', line 133 def to_envelope(*key_pairs) signatures = key_pairs.map(&method(:sign_decorated)) TransactionEnvelope.new({ :signatures => signatures, :tx => self }) end |
#to_operations ⇒ Array<Operation>
Extracts the operations from this single transaction, setting the source account on the extracted operations.
Useful for merging transactions.
156 157 158 159 160 161 |
# File 'lib/stellar/transaction.rb', line 156 def to_operations cloned = Marshal.load Marshal.dump(operations) operations.each do |op| op.source_account = self.source_account end end |