Class: TonSdkRubySmc::NFT

Inherits:
Object
  • Object
show all
Extended by:
TonSdkRuby, TonSdkRubySmc
Defined in:
lib/ton-sdk-ruby-smc/tokens/nft.rb

Constant Summary

Constants included from TonSdkRubySmc

PWV2_CODE, TOKEN_ATTRIBUTES_SHA256, VERSION

Class Method Summary collapse

Methods included from TonSdkRubySmc

require_type

Class Method Details

.build_transfer(query_id, new_owner, response_destination, forward_amount, forward_payload, custom_payload = nil) ⇒ Object

transfer#5fcc3d14 query_id:uint64 new_owner:MsgAddress response_destination:MsgAddress

custom_payload:(Maybe ^Cell) forward_amount:(VarUInteger 16)
forward_payload:(Either Cell ^Cell) = InternalMsgBody;


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
# File 'lib/ton-sdk-ruby-smc/tokens/nft.rb', line 36

def self.build_transfer(query_id, new_owner, response_destination, forward_amount, forward_payload, custom_payload = nil)
  require_type('query_id', query_id, Integer)
  require_type('new_owner', new_owner, Address)
  require_type('response_destionation', response_destionation, Address)
  require_type('custom_payload', custom_payload, Cell) unless custom_payload.nil?
  require_type('forward_amount', forward_amount, Coins)
  require_type('forward_payload', forward_payload, Cell)

  body = Builder.new
  body.store_uint(0x5fcc3d14, 32)
  body.store_uint(query_id, 64)
  body.store_address(new_owner)
  body.store_address(response_destionation)
  body.store_maybe_ref(custom_payload)
  body.store_coins(forward_amount)

  if (body.bits.size + forward_payload.bits.size > 1023) || body.refs.size + forward_payload.refs.size > 4
    body.store_bit(1)
    body.store_ref(forward_payload)
  else
    body.store_bit(0)
    body.store_slice(forward_payload.parse)
  end
  body.cell
end