class Xpring::Wallet

Representation of a XRP wallet

Constants

INVALID_MNEMONIC_OR_DERIVATION_PATH_MSG
SIGN_ERROR_MSG

Attributes

private_key[R]
public_key[R]
test[R]

Public Class Methods

from_mnemonic(mnemonic, derivation_path: nil, test: false) click to toggle source

@param mnemonic [#to_s] @param derivation_path [#to_s, nil] @param test [true, false] @raise [Xpring::Error] @return [Xpring::Wallet]

# File lib/xpring/wallet.rb, line 20
    def self.from_mnemonic(mnemonic, derivation_path: nil, test: false)
      result = Javascript.run do
        <<~JAVASCRIPT
          #{Javascript::ENTRY_POINT}.Wallet.generateWalletFromMnemonic(
            '#{mnemonic}',
            '#{derivation_path&.to_s}' ||
              #{Javascript::ENTRY_POINT}.Wallet.getDefaultDerivationPath(),
            #{test},
          );
        JAVASCRIPT
      end

      raise Error.new(INVALID_MNEMONIC_OR_DERIVATION_PATH_MSG) if result.nil?

      new(result[:publicKey], result[:privateKey], result[:test])
    end
from_seed(seed, test: false) click to toggle source

@param seed [#to_s] @param test [true, false] @return [Xpring::Wallet]

# File lib/xpring/wallet.rb, line 40
    def self.from_seed(seed, test: false)
      result = Javascript.run do
        <<~JAVASCRIPT
          #{Javascript::ENTRY_POINT}.Wallet.generateWalletFromSeed(
            '#{seed}',
            #{test},
          );
        JAVASCRIPT
      end
      new(result[:publicKey], result[:privateKey], result[:test])
    end
new(public_key, private_key, test) click to toggle source

@param public_key [#to_s] @param private_key [#to_s] @param test [true, false]

# File lib/xpring/wallet.rb, line 55
def initialize(public_key, private_key, test)
  @public_key = public_key.to_s
  @private_key = private_key.to_s
  @test = test
end

Public Instance Methods

address() click to toggle source

@return [String]

# File lib/xpring/wallet.rb, line 62
    def address
      @address ||= Javascript.run do
        <<~JAVASCRIPT
          #{to_javascript}.getAddress();
        JAVASCRIPT
      end
    end
sign(input) click to toggle source

@param input [#to_s] @raise [Xpring::Error] @return [String]

# File lib/xpring/wallet.rb, line 73
    def sign(input)
      signed = Javascript.run do
        <<~JAVASCRIPT
          #{to_javascript}.sign('#{input}');
        JAVASCRIPT
      end
      raise Error.new(SIGN_ERROR_MSG) if signed.nil?

      signed
    end
to_javascript() click to toggle source

@return [String] Javascript constructor expression for this Wallet

# File lib/xpring/wallet.rb, line 96
    def to_javascript
      <<~JAVASCRIPT
        new #{Javascript::ENTRY_POINT}.Wallet(
          '#{public_key}',
          '#{private_key}',
          #{test},
        )
      JAVASCRIPT
    end
valid?(message, signature) click to toggle source

@param message [#to_s] @param signature [#to_s] @return [true, false]

# File lib/xpring/wallet.rb, line 87
    def valid?(message, signature)
      Javascript.run do
        <<~JAVASCRIPT
          #{to_javascript}.verify('#{message}', '#{signature}');
        JAVASCRIPT
      end == true
    end