Class: OpenAssets::Provider::BitcoinCoreProvider

Inherits:
BlockChainProviderBase show all
Defined in:
lib/openassets/provider/bitcoin_core_provider.rb

Overview

The implementation of BlockChain provider using Bitcoin Core.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ BitcoinCoreProvider

Returns a new instance of BitcoinCoreProvider.



11
12
13
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 11

def initialize(config)
  @config = config
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



9
10
11
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 9

def config
  @config
end

Instance Method Details

#get_transaction(transaction_hash, verbose = 0) ⇒ String

Get raw transaction.

Parameters:

  • transaction_hash (String)

    The transaction hash.

  • verbose (String) (defaults to: 0)

    Whether to get the serialized or decoded transaction. 0: serialized transaction (Default). 1: decode transaction.

Returns:

  • (String)

    (if verbose=0)—the serialized transaction. (if verbose=1)—the decoded transaction. (if transaction not found)—nil.



27
28
29
30
31
32
33
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 27

def get_transaction(transaction_hash, verbose = 0)
  begin
    request('getrawtransaction', transaction_hash, verbose)
  rescue OpenAssets::Provider::ApiError => e
    nil
  end
end

#list_unspent(addresses = [], min = 1, max = 9999999) ⇒ Object

Get an array of unspent transaction outputs belonging to this wallet.

Parameters:

  • addresses (Array) (defaults to: [])

    If present, only outputs which pay an address in this array will be returned.

  • min (Integer) (defaults to: 1)

    The minimum number of confirmations the transaction containing an output must have in order to be returned. Default is 1.

  • max (Integer) (defaults to: 9999999)

    The maximum number of confirmations the transaction containing an output may have in order to be returned. Default is 9999999.



19
20
21
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 19

def list_unspent(addresses = [], min = 1 , max = 9999999)
  request('listunspent', min, max, addresses)
end

#send_transaction(tx) ⇒ String

Validates a transaction and broadcasts it to the peer-to-peer network.

Parameters:

  • tx (String)

    The serialized format transaction.

Returns:

  • (String)

    The TXID or error message.



47
48
49
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 47

def send_transaction(tx)
  request('sendrawtransaction', tx)
end

#sign_transaction(tx) ⇒ Bitcoin::Protocol::Tx

Signs a transaction in the serialized transaction format using private keys.

Parameters:

  • tx (String)

    The serialized format transaction.

Returns:

  • (Bitcoin::Protocol::Tx)

    The signed transaction.

Raises:



38
39
40
41
42
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 38

def sign_transaction(tx)
  signed_tx = request('signrawtransaction', tx)
  raise OpenAssets::Error, 'Could not sign the transaction.' unless signed_tx['complete']
  Bitcoin::Protocol::Tx.new(signed_tx['hex'].htb)
end