Class: Solace::Transaction

Inherits:
SerializableRecord show all
Defined in:
lib/solace/transaction.rb

Constant Summary collapse

SERIALIZER =
Solace::Serializers::TransactionSerializer
DESERIALIZER =
Solace::Serializers::TransactionDeserializer
SIGNATURE_PLACEHOLDER =
Solace::Utils::Codecs.base58_to_binary('1' * 64)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from SerializableRecord

deserialize, #serialize

Methods included from Concerns::BinarySerializable

#to_binary, #to_bytes, #to_io

Constructor Details

#initialize(signatures: [], message: Solace::Message.new) ⇒ Solace::Transaction

Initialize a new transaction



54
55
56
57
58
59
60
# File 'lib/solace/transaction.rb', line 54

def initialize(
  signatures: [],
  message: Solace::Message.new
)
  @signatures = signatures
  @message = message
end

Instance Attribute Details

#messageSolace::Message

Returns Message of the transaction.

Returns:



39
40
41
# File 'lib/solace/transaction.rb', line 39

def message
  @message
end

#signaturesArray<String>

Returns Signatures of the transaction (binary).

Returns:

  • (Array<String>)

    Signatures of the transaction (binary)



35
36
37
# File 'lib/solace/transaction.rb', line 35

def signatures
  @signatures
end

Class Method Details

.from(base64_tx) ⇒ Solace::Transaction

Deserialize a base64 encoded transaction into a Solace::Transaction object

Parameters:

  • base64_tx (String)

    The base64 encoded transaction

Returns:



46
47
48
# File 'lib/solace/transaction.rb', line 46

def from(base64_tx)
  DESERIALIZER.call Solace::Utils::Codecs.base64_to_bytestream(base64_tx)
end

Instance Method Details

#sign(*keypairs) ⇒ Array<String>

Sign the transaction

Calls sign_and_update_signatures for each keypair passed in.

Parameters:

  • keypairs (<Solace::Keypair>)

    The keypairs to sign the transaction with

Returns:

  • (Array<String>)

    The signatures of the transaction



68
69
70
# File 'lib/solace/transaction.rb', line 68

def sign(*keypairs)
  keypairs.map { |keypair| sign_and_update_signatures(keypair) }
end