Class: NearApi::Transaction

Inherits:
Object
  • Object
show all
Includes:
Borsh
Defined in:
lib/near_api/transaction.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(receiver_id, actions, config: NearApi.config, key: NearApi.key) ⇒ Transaction

Returns a new instance of Transaction.



22
23
24
25
26
27
28
# File 'lib/near_api/transaction.rb', line 22

def initialize(receiver_id, actions, config: NearApi.config, key: NearApi.key)
  @key = key
  @receiver_id = receiver_id
  @actions = Array(actions)
  @config = config
  @api = NearApi::Api.new(config)
end

Class Method Details

.async(*args) ⇒ Object



18
19
20
# File 'lib/near_api/transaction.rb', line 18

def self.async(*args)
  new(*args).async
end

.call(*args) ⇒ Object



14
15
16
# File 'lib/near_api/transaction.rb', line 14

def self.call(*args)
  new(*args).call
end

Instance Method Details

#call(wait_until: Status::EXECUTED_OPTIMISTIC) ⇒ Object



30
31
32
33
# File 'lib/near_api/transaction.rb', line 30

def call(wait_until: Status::EXECUTED_OPTIMISTIC)
  signature = key.sign(message.digest)
  call_api(message.message, signature, wait_until: wait_until)
end

#call_api(message, signature, wait_until: Status::EXECUTED_OPTIMISTIC) ⇒ Object



46
47
48
49
50
# File 'lib/near_api/transaction.rb', line 46

def call_api(message, signature, wait_until: Status::EXECUTED_OPTIMISTIC)
  signed_transaction = message + Borsh::Integer.new(key.key_type, :u8).to_borsh + signature
  params = { signed_tx_base64: Base64.strict_encode64(signed_transaction), wait_until: wait_until }
  api.json_rpc('send_tx', params)
end

#message ⇒ Object



35
36
37
38
39
40
# File 'lib/near_api/transaction.rb', line 35

def message
  @message ||= begin
    message = to_borsh
    Struct.new(:message, :digest).new(message, Digest::SHA256.digest(message))
  end
end

#transaction_hash ⇒ Object



42
43
44
# File 'lib/near_api/transaction.rb', line 42

def transaction_hash
  NearApi::Base58.encode(message.digest)
end