Class: OpenAssets::Provider::BitcoinCoreProvider
- Inherits:
-
BlockChainProviderBase
- Object
- BlockChainProviderBase
- OpenAssets::Provider::BitcoinCoreProvider
- Defined in:
- lib/openassets/provider/bitcoin_core_provider.rb
Overview
The implementation of BlockChain provider using Bitcoin Core.
Constant Summary collapse
- RPC_API =
[ :addmultisigaddress, :addnode, :backupwallet, :createmultisig, :createrawtransaction, :decoderawtransaction, :decodescript, :dumpprivkey, :dumpwallet, :encryptwallet, :estimatefee, :estimatepriority, :generate, :getaccountaddress, :getaccount, :getaddednodeinfo, :getaddressesbyaccount, :getbalance, :getbestblockhash, :getblock, :getblockchaininfo, :getblockcount, :getblockhash, :getchaintips, :getconnectioncount, :getdifficulty, :getgenerate, :gethashespersec, :getinfo, :getmempoolinfo, :getmininginfo, :getnettotals, :getnetworkhashps, :getnetworkinfo, :getnewaddress, :getpeerinfo, :getrawchangeaddress, :getrawmempool, :getrawtransaction, :getreceivedbyaccount, :getreceivedbyaddress, :gettransaction, :gettxout, :gettxoutproof, :gettxoutsetinfo, :getunconfirmedbalance, :getwalletinfo, :getwork, :help, :importaddress, :importprivkey, :importwallet, :keypoolrefill, :listaccounts, :listaddressgroupings, :listlockunspent, :listreceivedbyaccount, :listreceivedbyaddress, :listsinceblock, :listtransactions, :listunspent, :lockunspent, :move, :ping, :prioritisetransaction, :sendfrom, :sendmany, :sendrawtransaction, :sendtoaddress, :setaccount, :setgenerate, :settxfee, :signmessage, :signrawtransaction, :stop, :submitblock, :validateaddress, :verifychain, :verifymessage, :verifytxoutproof, :walletlock, :walletpassphrase, :walletpassphrasechange ]
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
Instance Method Summary collapse
-
#get_transaction(transaction_hash, verbose = 0) ⇒ String
Get raw transaction.
-
#import_address(address) ⇒ Object
Adds an address or pubkey script to the wallet without the associated private key, allowing you to watch for transactions affecting that address or pubkey script without being able to spend any of its outputs.
-
#initialize(config) ⇒ BitcoinCoreProvider
constructor
A new instance of BitcoinCoreProvider.
-
#list_unspent(addresses = [], min = 1, max = 9999999) ⇒ Object
Get an array of unspent transaction outputs belonging to this wallet.
- #method_missing(method, *params) ⇒ Object
-
#send_transaction(tx) ⇒ String
Validates a transaction and broadcasts it to the peer-to-peer network.
-
#sign_transaction(tx) ⇒ Bitcoin::Protocol::Tx
Signs a transaction in the serialized transaction format using private keys.
Constructor Details
#initialize(config) ⇒ BitcoinCoreProvider
Returns a new instance of BitcoinCoreProvider.
27 28 29 |
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 27 def initialize(config) @config = config end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *params) ⇒ Object
73 74 75 76 |
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 73 def method_missing(method, *params) super unless RPC_API.include?(method) request(method, *params) end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
25 26 27 |
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 25 def config @config end |
Instance Method Details
#get_transaction(transaction_hash, verbose = 0) ⇒ String
Get raw transaction.
43 44 45 46 47 48 49 |
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 43 def get_transaction(transaction_hash, verbose = 0) begin request('getrawtransaction', transaction_hash, verbose) rescue OpenAssets::Provider::ApiError => e nil end end |
#import_address(address) ⇒ Object
Adds an address or pubkey script to the wallet without the associated private key, allowing you to watch for transactions affecting that address or pubkey script without being able to spend any of its outputs.
69 70 71 |
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 69 def import_address(address) request('importaddress', address) end |
#list_unspent(addresses = [], min = 1, max = 9999999) ⇒ Object
Get an array of unspent transaction outputs belonging to this wallet.
35 36 37 |
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 35 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.
63 64 65 |
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 63 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.
54 55 56 57 58 |
# File 'lib/openassets/provider/bitcoin_core_provider.rb', line 54 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 |