Sha256: 3769d5cf4d3f015717de3ef65e91af736a02abcd5af672f72f11d39fa6dd81df

Contents?: true

Size: 1.52 KB

Versions: 10

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true

module Glueby
  module Contract
    # This class can send TPC between wallets.
    #
    # Examples:
    #
    # sender = Glueby::Wallet.load("wallet_id")
    # receiver = Glueby::Wallet.load("wallet_id")
    #                      or
    #            Glueby::Wallet.create
    #
    # Use `Glueby::Internal::Wallet#receive_address` to generate the address of a receiver
    # receiver.internal_wallet.receive_address
    # => '1CY6TSSARn8rAFD9chCghX5B7j4PKR8S1a'
    #
    # Balance of sender and receiver before send
    # sender.balances[""]
    # => 100_000(tapyrus)
    # receiver.balances[""]
    # => 0(tapyrus)
    #
    # Send
    # Payment.transfer(sender: sender, receiver_address: '1CY6TSSARn8rAFD9chCghX5B7j4PKR8S1a', amount: 10_000)
    # sender.balances[""]
    # => 90_000
    # receiver.balances[""]
    # => 10_000
    #
    class Payment
      class << self
        def transfer(sender:, receiver_address:, amount:, fee_estimator: FeeEstimator::Fixed.new)
          raise Glueby::Contract::Errors::InvalidAmount unless amount.positive?

          txb = Internal::ContractBuilder.new(
            sender_wallet: sender.internal_wallet,
            fee_estimator: fee_estimator
          )

          _sum, outputs = sender.internal_wallet.collect_uncolored_outputs(txb.dummy_fee + amount)
          outputs.each do |utxo|
            txb.add_utxo(utxo)
          end

          txb.pay(receiver_address, amount)

          sender.internal_wallet.broadcast(txb.build)
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
glueby-1.5.0 lib/glueby/contract/payment.rb
glueby-1.4.0 lib/glueby/contract/payment.rb
glueby-1.3.0 lib/glueby/contract/payment.rb
glueby-1.2.3 lib/glueby/contract/payment.rb
glueby-1.2.2 lib/glueby/contract/payment.rb
glueby-1.2.1 lib/glueby/contract/payment.rb
glueby-1.2.0 lib/glueby/contract/payment.rb
glueby-1.2.0.beta.3 lib/glueby/contract/payment.rb
glueby-1.2.0.beta.2 lib/glueby/contract/payment.rb
glueby-1.2.0.beta.1 lib/glueby/contract/payment.rb