diff --git a/CHANGELOG.md b/CHANGELOG.md index 47ba49b8c5..da1fdad3e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,10 @@ Improve `dfx canister logs` with several options Updated Motoko to [0.14.9](https://github.com/dfinity/motoko/releases/tag/0.14.9) +### Bitcoin canister + +Upgraded Bitcoin canister to [release/2024-08-30](https://github.com/dfinity/bitcoin-canister/releases/tag/release%2F2024-08-30) + # 0.26.1 ### fix: clear state when switching from shared to project network diff --git a/e2e/assets/bitcoin/bitcoin.did b/e2e/assets/bitcoin/bitcoin.did index 70cc48282e..1784c9c819 100644 --- a/e2e/assets/bitcoin/bitcoin.did +++ b/e2e/assets/bitcoin/bitcoin.did @@ -1,75 +1,147 @@ -type satoshi = nat64; -type bitcoin_network = variant { - mainnet; - testnet; - regtest; +type network = variant { + mainnet; + testnet; + regtest; }; -type bitcoin_address = text; + +type satoshi = nat64; + +type address = text; + type block_hash = blob; + +type block_header = blob; + +type block_height = nat32; + type outpoint = record { - txid : blob; - vout : nat32; + txid : blob; + vout : nat32; }; + type utxo = record { - outpoint : outpoint; - value : satoshi; - height : nat32; -}; -type bitcoin_get_utxos_args = record { - address : bitcoin_address; - network : bitcoin_network; - filter : opt variant { - min_confirmations : nat32; - page : blob; - }; -}; -type bitcoin_get_utxos_query_args = record { - address : bitcoin_address; - network : bitcoin_network; - filter : opt variant { - min_confirmations : nat32; - page : blob; - }; -}; -type bitcoin_get_current_fee_percentiles_args = record { - network : bitcoin_network; -}; -type bitcoin_get_utxos_result = record { - utxos : vec utxo; - tip_block_hash : block_hash; - tip_height : nat32; - next_page : opt blob; -}; -type bitcoin_get_utxos_query_result = record { - utxos : vec utxo; - tip_block_hash : block_hash; - tip_height : nat32; - next_page : opt blob; -}; -type bitcoin_get_balance_args = record { - address : bitcoin_address; - network : bitcoin_network; - min_confirmations : opt nat32; -}; -type bitcoin_get_balance_query_args = record { - address : bitcoin_address; - network : bitcoin_network; - min_confirmations : opt nat32; -}; -type bitcoin_send_transaction_args = record { - transaction : blob; - network : bitcoin_network; + outpoint : outpoint; + value : satoshi; + height : block_height; +}; + +type flag = variant { + enabled; + disabled; +}; + +type init_config = record { + stability_threshold : opt nat; + network : opt network; + blocks_source : opt principal; + syncing : opt flag; + fees : opt fees; + api_access : opt flag; + disable_api_if_not_fully_synced : opt flag; + watchdog_canister : opt opt principal; + burn_cycles : opt flag; + lazily_evaluate_fee_percentiles : opt flag; +}; + +type config = record { + stability_threshold : nat; + network : network; + blocks_source : principal; + syncing : flag; + fees : fees; + api_access : flag; + disable_api_if_not_fully_synced : flag; + watchdog_canister : opt principal; + burn_cycles : flag; + lazily_evaluate_fee_percentiles : flag; +}; + +type fees = record { + get_utxos_base : nat; + get_utxos_cycles_per_ten_instructions : nat; + get_utxos_maximum : nat; + get_balance : nat; + get_balance_maximum : nat; + get_current_fee_percentiles : nat; + get_current_fee_percentiles_maximum : nat; + send_transaction_base : nat; + send_transaction_per_byte : nat; + get_block_headers_base : nat; + get_block_headers_cycles_per_ten_instructions : nat; + get_block_headers_maximum : nat; +}; + +type get_balance_request = record { + network : network; + address : address; + min_confirmations : opt nat32; }; + +type get_utxos_request = record { + network : network; + address : address; + filter : opt variant { + min_confirmations : nat32; + page : blob; + }; +}; + +type get_utxos_response = record { + utxos : vec utxo; + tip_block_hash : block_hash; + tip_height : block_height; + next_page : opt blob; +}; + +type get_current_fee_percentiles_request = record { + network : network; +}; + +type send_transaction_request = record { + network : network; + transaction : blob; +}; + type millisatoshi_per_byte = nat64; -type bitcoin_get_balance_result = satoshi; -type bitcoin_get_balance_query_result = satoshi; -type bitcoin_get_current_fee_percentiles_result = vec millisatoshi_per_byte; -service ic : { - // bitcoin interface - bitcoin_get_balance : (bitcoin_get_balance_args) -> (bitcoin_get_balance_result); - bitcoin_get_balance_query : (bitcoin_get_balance_query_args) -> (bitcoin_get_balance_query_result) query; - bitcoin_get_utxos : (bitcoin_get_utxos_args) -> (bitcoin_get_utxos_result); - bitcoin_get_utxos_query : (bitcoin_get_utxos_query_args) -> (bitcoin_get_utxos_query_result) query; - bitcoin_send_transaction : (bitcoin_send_transaction_args) -> (); - bitcoin_get_current_fee_percentiles : (bitcoin_get_current_fee_percentiles_args) -> (bitcoin_get_current_fee_percentiles_result); + +type set_config_request = record { + stability_threshold : opt nat; + syncing : opt flag; + fees : opt fees; + api_access : opt flag; + disable_api_if_not_fully_synced : opt flag; + watchdog_canister : opt opt principal; + burn_cycles : opt flag; + lazily_evaluate_fee_percentiles : opt flag; +}; + +type get_block_headers_request = record { + start_height : block_height; + end_height : opt block_height; + network : network; +}; + +type get_block_headers_response = record { + tip_height : block_height; + block_headers : vec block_header; +}; + +service bitcoin : (init_config) -> { + bitcoin_get_balance : (get_balance_request) -> (satoshi); + + bitcoin_get_balance_query : (get_balance_request) -> (satoshi) query; + + bitcoin_get_utxos : (get_utxos_request) -> (get_utxos_response); + + bitcoin_get_utxos_query : (get_utxos_request) -> (get_utxos_response) query; + + bitcoin_get_current_fee_percentiles : (get_current_fee_percentiles_request) -> (vec millisatoshi_per_byte); + + bitcoin_get_block_headers : (get_block_headers_request) -> (get_block_headers_response); + + bitcoin_send_transaction : (send_transaction_request) -> (); + + get_config : () -> (config) query; + + set_config : (set_config_request) -> (); }; diff --git a/nix/sources.json b/nix/sources.json index 0b2e3d9059..3409cdace7 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -1,10 +1,10 @@ { "ic-btc-canister": { - "sha256": "1b34jpxkk72h07ls0fspwrgmndmj7xhlivdhn82msvgz8mx69x89", + "sha256": "0giwl43l1rlwc116zrnr4ss8cb23c0jxk2jxshvmy189pqaadbfh", "type": "file", - "url": "https://github.com/dfinity/bitcoin-canister/releases/download/release%2F2023-10-13/ic-btc-canister.wasm.gz", + "url": "https://github.com/dfinity/bitcoin-canister/releases/download/release%2F2024-08-30/ic-btc-canister.wasm.gz", "url_template": "https://github.com/dfinity/bitcoin-canister/releases/download//ic-btc-canister.wasm.gz", - "version": "release%2F2023-10-13" + "version": "release%2F2024-08-30" }, "motoko-base": { "builtin": false, diff --git a/src/dfx/assets/dfx-asset-sources.toml b/src/dfx/assets/dfx-asset-sources.toml index 496a7e5130..9d9c5a390a 100644 --- a/src/dfx/assets/dfx-asset-sources.toml +++ b/src/dfx/assets/dfx-asset-sources.toml @@ -14,8 +14,8 @@ url = 'https://github.com/dfinity/motoko/releases/download/0.14.9/motoko-base-li sha256 = 'df6fcc13142bd384f9401504660a880d80e1d2d35086092f45694147dc962730' [x86_64-darwin.ic-btc-canister] -url = 'https://github.com/dfinity/bitcoin-canister/releases/download/release%2F2023-10-13/ic-btc-canister.wasm.gz' -sha256 = '09f5647a45ff6d5d05b2b0ed48613fb2365b5fe6573ba0e901509c39fb9564ac' +url = 'https://github.com/dfinity/bitcoin-canister/releases/download/release%2F2024-08-30/ic-btc-canister.wasm.gz' +sha256 = 'd0ada614be09055f37d45d8ad92560432c86b426d9e66f42609ce64007a13c3e' [x86_64-linux.motoko] url = 'https://github.com/dfinity/motoko/releases/download/0.14.9/motoko-Linux-x86_64-0.14.9.tar.gz' @@ -30,5 +30,5 @@ url = 'https://github.com/dfinity/motoko/releases/download/0.14.9/motoko-base-li sha256 = 'df6fcc13142bd384f9401504660a880d80e1d2d35086092f45694147dc962730' [x86_64-linux.ic-btc-canister] -url = 'https://github.com/dfinity/bitcoin-canister/releases/download/release%2F2023-10-13/ic-btc-canister.wasm.gz' -sha256 = '09f5647a45ff6d5d05b2b0ed48613fb2365b5fe6573ba0e901509c39fb9564ac' +url = 'https://github.com/dfinity/bitcoin-canister/releases/download/release%2F2024-08-30/ic-btc-canister.wasm.gz' +sha256 = 'd0ada614be09055f37d45d8ad92560432c86b426d9e66f42609ce64007a13c3e'