bdk/example-crates/example_bitcoind_rpc_polling
志宇 3fa44a58ec
Merge bitcoindevkit/bdk#1292: fix(store): Remove lifetime
e6433fb2c1526cff37e3a17cc71986759ebac30f feat(persist): Add stage_and_commit to Persist (LLFourn)
0bee46e75bc99112abc15de59984e6059ff874e5 fix(store): Remove lifetime (LLFourn)

Pull request description:

  Remove gratuitous use of lifetimes in the main persistence struct `Store`. Having lifetimes on this means that you have to keep the magic bytes alive longer than the database which is particularly offensive if you have to send the database to another thread. On top of that the bytes aren't even read.

ACKs for top commit:
  evanlinjin:
    ACK e6433fb2c1526cff37e3a17cc71986759ebac30f

Tree-SHA512: 7f6d9d60951a8ceaee30719d0771e15632c6fad0702294af15409c5df492669a07299874ef5ee34e3d75bdecbbd41df29bced3ff16b2360d5d5c7687ef677ffc
2024-01-19 23:28:56 +08:00
..

Example RPC CLI

Simple Regtest Test

  1. Start local regtest bitcoind.
     mkdir -p /tmp/regtest/bitcoind
     bitcoind -regtest -server -fallbackfee=0.0002 -rpcuser=<your-rpc-username> -rpcpassword=<your-rpc-password> -datadir=/tmp/regtest/bitcoind -daemon
    
  2. Create a test bitcoind wallet and set bitcoind env.
    bitcoin-cli -datadir=/tmp/regtest/bitcoind -regtest -rpcuser=<your-rpc-username> -rpcpassword=<your-rpc-password> -named createwallet wallet_name="test"
    export RPC_URL=127.0.0.1:18443
    export RPC_USER=<your-rpc-username>
    export RPC_PASS=<your-rpc-password>
    
  3. Get test bitcoind wallet info.
    bitcoin-cli -rpcwallet="test" -rpcuser=<your-rpc-username> -rpcpassword=<your-rpc-password> -datadir=/tmp/regtest/bitcoind -regtest getwalletinfo
    
  4. Get new test bitcoind wallet address.
    BITCOIND_ADDRESS=$(bitcoin-cli -rpcwallet="test" -datadir=/tmp/regtest/bitcoind -regtest -rpcuser=<your-rpc-username> -rpcpassword=<your-rpc-password> getnewaddress)
    echo $BITCOIND_ADDRESS
    
  5. Generate 101 blocks with reward to test bitcoind wallet address.
    bitcoin-cli -datadir=/tmp/regtest/bitcoind -regtest -rpcuser=<your-rpc-username> -rpcpassword=<your-rpc-password> generatetoaddress 101 $BITCOIND_ADDRESS
    
  6. Verify test bitcoind wallet balance.
    bitcoin-cli -rpcwallet="test" -datadir=/tmp/regtest/bitcoind -regtest -rpcuser=<your-rpc-username> -rpcpassword=<your-rpc-password> getbalances
    
  7. Set descriptor env and get address from RPC CLI wallet.
    export DESCRIPTOR="wpkh(tprv8ZgxMBicQKsPfK9BTf82oQkHhawtZv19CorqQKPFeaHDMA4dXYX6eWsJGNJ7VTQXWmoHdrfjCYuDijcRmNFwSKcVhswzqs4fugE8turndGc/1/*)"
    cargo run -- --network regtest address next
    
  8. Send 5 test bitcoin to RPC CLI wallet.
    bitcoin-cli -rpcwallet="test" -datadir=/tmp/regtest/bitcoind -regtest -rpcuser=<your-rpc-username> -rpcpassword=<your-rpc-password> sendtoaddress <address> 5
    
  9. Sync blockchain with RPC CLI wallet.
    cargo run -- --network regtest sync
    <CNTRL-C to stop syncing>
    
  10. Get RPC CLI wallet unconfirmed balances.
cargo run -- --network regtest balance
  1. Generate 1 block with reward to test bitcoind wallet address.
bitcoin-cli -datadir=/tmp/regtest/bitcoind -rpcuser=<your-rpc-username> -rpcpassword=<your-rpc-password> -regtest generatetoaddress 10 $BITCOIND_ADDRESS
  1. Sync the blockchain with RPC CLI wallet.
cargo run -- --network regtest sync
<CNTRL-C to stop syncing>
  1. Get RPC CLI wallet confirmed balances.
cargo run -- --network regtest balance
  1. Get RPC CLI wallet transactions.
cargo run -- --network regtest txout list