class Round::WalletCollection

Public Class Methods

new(options, &block) click to toggle source
Calls superclass method Round::Collection::new
# File lib/round/wallet.rb, line 41
def initialize(options, &block)
  super
  @application = options[:application]
end

Public Instance Methods

content_type() click to toggle source
# File lib/round/wallet.rb, line 46
def content_type
  Round::Wallet
end
create(name, passphrase, network: 'bitcoin_testnet', multiwallet: CoinOp::Bit::MultiWallet.generate([:primary, :backup])) click to toggle source
# File lib/round/wallet.rb, line 50
def create(name, passphrase, network: 'bitcoin_testnet',
           multiwallet: CoinOp::Bit::MultiWallet.generate([:primary, :backup]))
  backup = multiwallet.private_seed(:backup, network: :bitcoin)
  multiwallet.drop_private(:backup)
  backup_master = multiwallet.trees[:backup]
  new_bmaster = MoneyTree::Master.new(public_key: backup_master.public_key, chain_code: backup_master.chain_code)
  multiwallet.trees[:backup] = new_bmaster
  wallet_resource = create_wallet_resource(multiwallet, passphrase, name)
  multiwallet.import(
    cosigner_public_seed: wallet_resource.cosigner_public_seed
  )
  wallet = Round::Wallet.new(
    resource: wallet_resource,
    multiwallet: multiwallet,
    application: @application,
    client: @client
  )
  add(wallet)
  [backup, wallet]
end
create_wallet_resource(multiwallet, passphrase, name) click to toggle source
# File lib/round/wallet.rb, line 71
def create_wallet_resource(multiwallet, passphrase, name)
  primary_seed = CoinOp::Encodings.hex(multiwallet.trees[:primary].seed)
  ## Encrypt the primary seed using a passphrase-derived key
  encrypted_seed = CoinOp::Crypto::PassphraseBox.encrypt(passphrase, primary_seed)

  @resource.create(
    name: name,
    backup_public_seed: multiwallet.trees[:backup].to_bip32,
    primary_public_seed: multiwallet.trees[:primary].to_bip32,
    primary_private_seed: encrypted_seed
  )
end