Module: Solana::Ruby::Kit::OffchainMessages

Extended by:
T::Sig
Defined in:
lib/solana/ruby/kit/offchain_messages.rb,
lib/solana/ruby/kit/offchain_messages/codec.rb,
lib/solana/ruby/kit/offchain_messages/message.rb,
lib/solana/ruby/kit/offchain_messages/message_v1.rb

Defined Under Namespace

Modules: Codec Classes: Message, MessageV1, Signatory

Class Method Summary collapse

Class Method Details

.assert_offchain_message_v1_equal(received_message, expected_message) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/solana/ruby/kit/offchain_messages/message_v1.rb', line 70

def assert_offchain_message_v1_equal(received_message, expected_message)
  if received_message.content != expected_message.content
    Kernel.raise SolanaError.new(
      SolanaError::OFFCHAIN_MESSAGES__CONTENT_DOES_NOT_MATCH_EXPECTED,
      {
        actual_bytes:   utf8_byte_length(received_message.content),
        expected_bytes: utf8_byte_length(expected_message.content)
      }
    )
  end

  actual_addresses   = sorted_signatory_addresses(received_message)
  expected_addresses = sorted_signatory_addresses(expected_message)
  return if actual_addresses == expected_addresses

  Kernel.raise SolanaError.new(
    SolanaError::OFFCHAIN_MESSAGES__REQUIRED_SIGNATORIES_DO_NOT_MATCH_EXPECTED,
    {
      actual_addresses:   actual_addresses.map(&:to_s),
      expected_addresses: expected_addresses.map(&:to_s)
    }
  )
end

.decode_offchain_message(bytes) ⇒ Object



27
# File 'lib/solana/ruby/kit/offchain_messages.rb', line 27

def self.decode_offchain_message(bytes) = Codec.decode_offchain_message(bytes)

.encode_offchain_message(msg) ⇒ Object



24
# File 'lib/solana/ruby/kit/offchain_messages.rb', line 24

def self.encode_offchain_message(msg) = Codec.encode_offchain_message(msg)

.sign_offchain_message(signer, msg) ⇒ Object



30
# File 'lib/solana/ruby/kit/offchain_messages.rb', line 30

def self.sign_offchain_message(signer, msg) = Codec.sign_offchain_message(signer, msg)

.verify_offchain_message_signature(verify_key, signature, msg) ⇒ Object



39
40
41
# File 'lib/solana/ruby/kit/offchain_messages.rb', line 39

def self.verify_offchain_message_signature(verify_key, signature, msg)
  Codec.verify_offchain_message_signature(verify_key, signature, msg)
end