Sha256: 983896893e8c6efc2e34d6f717e5071289fb08e33778b088187c2e4152bc5e16

Contents?: true

Size: 1.51 KB

Versions: 22

Compression:

Stored size: 1.51 KB

Contents

module BTC
  # Represents an Asset Address, where the assets can be sent.
  class AssetAddress < BTC::Address
    
    register_class self
    
    NAMESPACE = 0x13
    
    def self.mainnet_version
      NAMESPACE
    end

    def self.testnet_version
      NAMESPACE
    end

    attr_reader :bitcoin_address
    
    def initialize(string: nil, bitcoin_address: nil, _raw_data: nil)
      if string
        _raw_data ||= Base58.data_from_base58check(string)
        raise FormatError, "Too short AssetAddress" if _raw_data.bytesize < 2
        raise FormatError, "Invalid namespace for AssetAddress" if _raw_data.bytes[0] != self.class.mainnet_version
        @bitcoin_address = BTC::Address.mux_parse_raw_data(_raw_data[1..-1])
        @base58check_string = string
      elsif bitcoin_address
        @base58check_string = nil
        @bitcoin_address = BTC::Address.parse(bitcoin_address)
      else
        raise ArgumentError, "Either data or string must be provided"
      end
      # If someone accidentally supplied AssetAddress as a bitcoin address, 
      # simply unwrap the bitcoin address from it.
      while @bitcoin_address.is_a?(self.class)
        @bitcoin_address = @bitcoin_address.bitcoin_address
        @base58check_string = nil
      end
    end

    def network
      @bitcoin_address.network
    end

    def script
      @bitcoin_address.script
    end

    def data_for_base58check_encoding
      BTC::Data.data_from_bytes([self.class.mainnet_version]) + @bitcoin_address.data_for_base58check_encoding
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
btcruby-1.8 lib/btcruby/open_assets/asset_address.rb
btcruby-1.7 lib/btcruby/open_assets/asset_address.rb
btcruby-1.6 lib/btcruby/open_assets/asset_address.rb
btcruby-1.5.1 lib/btcruby/open_assets/asset_address.rb
btcruby-1.5 lib/btcruby/open_assets/asset_address.rb
btcruby-1.4 lib/btcruby/open_assets/asset_address.rb
btcruby-1.3 lib/btcruby/open_assets/asset_address.rb
btcruby-1.2.2 lib/btcruby/open_assets/asset_address.rb
btcruby-1.2.1 lib/btcruby/open_assets/asset_address.rb
btcruby-1.2 lib/btcruby/open_assets/asset_address.rb
btcruby-1.1.6 lib/btcruby/open_assets/asset_address.rb
btcruby-1.1.5 lib/btcruby/open_assets/asset_address.rb
btcruby-1.1.4 lib/btcruby/open_assets/asset_address.rb
btcruby-1.1.3 lib/btcruby/open_assets/asset_address.rb
btcruby-1.1.2 lib/btcruby/open_assets/asset_address.rb
btcruby-1.1.1 lib/btcruby/open_assets/asset_address.rb
btcruby-1.1 lib/btcruby/open_assets/asset_address.rb
btcruby-1.0.9 lib/btcruby/open_assets/asset_address.rb
btcruby-1.0.8 lib/btcruby/open_assets/asset_address.rb
btcruby-1.0.7 lib/btcruby/open_assets/asset_address.rb