github bestinslot-xyz/brc20-programmable-module v0.16.0

7 hours ago

Chore

  • update dependencies and tests for bip322
  • Update API
  • Update dependencies and add new packages
    • Updated alloy to version 1.1.2 and related packages to their latest versions.
    • Updated hyper to version 1.8.1 and jsonrpsee to version 0.26.0.
    • Updated revm and related packages to their latest versions.
    • Updated criterion and insta to their latest versions.
    • Updated tower-http, tracing, and tracing-subscriber to their latest versions.
    • Updated test-utils dependencies to match the main project.
  • cargo fmt
  • add release configuration file for versioning and changelog generation
  • Release brc20-prog version 0.11.5
  • cargo fmt
  • Cargo fmt
  • Run cargo fmt
  • Bump version to 0.6.2
  • Update package metadata in Cargo.toml
  • Move documentation for Brc20ProgApi to top-level module
  • Move super:: imports to crates
  • Run cargo fmt
  • Update dependencies and update RPC authorization middleware to latest jsonrpsee library
  • Bump version of brc20_prog to 0.2.0
  • Bump version of brc20_prog to 0.1.1 in Cargo files

Documentation

  • Add description for txpool_content method in README.md
  • Update brc20_deploy, brc20_call, brc20_transact method parameters to include op_return_tx_id field
  • Simplify cargo run command in README
    Removed the 'server' feature requirement from the run command, as it's now enabled by default
  • Add warning about ticker case sensitivity and format in README
  • Add caution note about basic auth and secure connections in README
  • Remove warning about zstd compression stack size requirement from README, as it now uses Vec instead of a fixed size slice
  • Update README to include note about BRC20 indexer integration and enhance operation checks for deploy/call inscriptions
  • Update module documentation for clarity and completeness
  • update README with warnings about BRC20 balance server and BIP322_Verifier contract limitations

New Features

  • eth_call* and eth_estimateGas* methods now wait for block finalisation instead of failing when they are called mid-block
    • feat: Wait for block finalisation on eth_call* methods

    • test: Update mid-block read contract test to wait for block finalisation

    • fix: Notify waiters when clearing caches to prevent indefinite waiting, and fail gas estimation if block height change during estimation

  • Enhance gas estimation logic with binary search adjustments
  • Add gas estimation with binary search for estimateGas and estimateGasMany
  • Implement eth_callMany with precompile data injection
  • Change tx hash computation to use RLP hash from a set block height
  • Sort transactions by index in block processing
  • Add debug methods for block trace string retrieval
  • Add PrecompileData struct and update eth_callMany and eth_estimateGasMany methods to include precompile_data parameter
  • Add revm-bytecode dependency to avoid bringing the whole revm for non-server version and update imports
  • Update alloy to v1.1.0, revm to v31.0.0, remove revm_state and refactor accordingly
    • Updated dependencies in Cargo.toml to their latest versions, including:
      • alloy to 1.1.0
      • revm to 31.0.0
      • serde to 1.0.228
      • tokio to 1.48.0
      • criterion to 0.7.0
      • tempfile to 3.23.0
    • Updated imports from revm_state to revm::state for consistency.
    • Modified EVM execution logic to use new transaction handling methods.
    • Adjusted precompile functions to utilize U256 for block height instead of u64 (following revm).
    • Added tests to ensure correct behavior with updated block height handling.
  • Enhance BRC20 precompiles with op_return_tx_id support (enabled after the prague upgrade)
    • Updated get_evm to accept current_op_return_tx_id and pass it to BRC20Precompiles.
    • Modified hardfork activation heights for mainnet and signet.
    • Introduced get_op_return_tx_id_precompile to retrieve the op return transaction ID.
    • Added gas cost for fetching the op return transaction ID.
    • Updated RPC server methods to include op_return_tx_id parameter.
    • Enhanced tests to validate behavior with and without op return transaction IDs.
  • use the block height parameter to eth_call and eth_estimateGas
  • implement dynamic EVM spec selection based on block number and network
  • enhance error handling for eth_call and eth_estimateGas with status codes and detailed messages in RPC server
  • Implement web3_ api in Brc20ProgApi
  • Add a global values database to Brc20ProgDatabase and disallow multiple reorgs by storing a global maximum reorg height
  • Refactor transaction handling by removing unnecessary fields, and simplify the code
    • Updated the TxED struct to use the new Signature struct, simplifying the transaction data structure.
    • Refactored TxReceiptED by removing unused fields and adjusting the encoding/decoding logic accordingly.
    • Modified the BRC20ProgEngine to utilize the new Signature struct when creating transactions.
    • Updated the RPC server to handle the new transaction receipt structure.
    • Adjusted tests to reflect changes in the transaction and receipt structures, ensuring proper validation of transaction results using "debug_traceTransaction".
    • Incremented database version to 8 to reflect schema changes.
  • Add brc20_transact method for sending raw signed transactions and update parameter names
  • Add debug_getRaw* methods in the API and update version to 0.10.0
  • Add "brc20_transact" method to indexer methods list
  • Store and serve v,r,s fields from raw signed transactions, bump version to 0.9.0
  • Enhance BRC2.0 with pending transaction management
    • Added a new database structure to handle pending transactions, allowing for efficient retrieval and management of transactions by account and nonce.
    • Implemented methods to set, get, remove, and clear pending transactions, ensuring transactions can be processed in order.
    • Updated BlockCachedDatabase to support new operations for managing key-value pairs, and removals.
    • Modified BRC20ProgEngine to handle pending transactions during block processing, ensuring that transactions are executed in the correct order.
    • Updated RPC server to expose new endpoints for querying pending transactions.
    • Added comprehensive tests to validate the new transaction handling logic, including scenarios for out-of-order transactions and transaction expiration.
  • Support using RawBytes and Base64Bytes types together in BRC2.0 API
    • Updated the BRC20ProgEngine to include a TODO for handling future nonces.
    • Replaced EthBytes and InscriptionBytes with RawBytes and Base64Bytes in the API types.
    • Modified the RPC server to accommodate the new data types for deploy and call methods.
    • Added tests to validate the new encoded data handling for transactions and calls.
  • Add brc20_transact endpoint to handle signed evm transactions, currently disabled via config
  • Gate server-side features under "server" feature, this reduces client compilation time
    • Removed redundant input field from EthCall
    • Moved main.rs in a separate binary setup with the "server" feature required
    • eth_getTransactionCount now correctly returns the account nonce
    • Bumped version to 0.7.0
  • Implement TryFrom trait for AddressED and FixedBytesED, add is_zero method to UintED
  • Implement TryFrom trait for AddressED and FixedBytesED, add is_zero method to UintED
  • Add EVM call gas limit configuration
  • Reduce GitHub Actions stack size to 2MB, move long responses in precompile tests into assets
  • Implement some precompile tests in rust
  • Add zstd compression support with 1MB buffer size, reorganise some internal variables
  • Increase block gas limit to 4MB (block size) * 12K (gas per byte)
  • Add functionality to retrieve inscription ID by contract address, bump db version to 2
  • Handle nada encoding in inscription data (not activated until compression activation height is set)
  • Add PROTOCOL_VERSION to configuration and database validation
  • Update environment variable name for BITCOIN_RPC_NETWORK, and use a denylist for RPC method auth
  • Add dotenv support and update dependencies
  • Validate bitcoin network using bitcoin rpc
  • Add EVM_RECORD_TRACES to env sample
  • Add an environment variable to toggle trace recording
  • Refactor contract call methods to redirect invalid transactions to 0xdead
  • Add inscription_id field to TxED and implement API method to retrieve it
  • Upgrade Solidity compiler to version 0.8.28 and update related dependencies
  • Enable optimizer and update output file generation in BRC20_Controller contract
  • Add a js script for BRC20_Controller contract to fix solc version
    BytecodeED doesn't return trailing zeroes anymore when serialised
  • Implement HTTP Basic Authentication middleware for RPC server, it allows all methods that start with eth_*, and rejects everything else if the request is unauthenticated
  • Add basic HTTP authentication support to the brc20_prog RPC server
  • Add data_or_input method to EthCall for improved data handling
  • Ignore transactions that happen in the future in tx details precompile
    Use a PrecompileCall struct to pass parameters to precompiles
  • change ticker parameter type to Bytes in transaction loading functions and add ticker_as_bytes utility function
  • include assigned gas limit in txes
  • verify new blocks don't already exist in the database, and generate new hashes for new blocks with hashes 0x00..00
  • add gas_price and syncing methods to Brc20ProgApi (to enhance explorer compatibility)
  • Add transfer tx for sample erc20 contract
  • Add an ERC20 contract example

Bug Fixes

  • update nonce retrieval to use get_account_nonce for pending transactions
  • Update eth_get_storage_at to return full length hex-encoded storage values
  • Update expected gas response values in test cases
  • keep midpoint instead of gas_used * 2 as upper bound to cover some edge cases
  • Clean up properly if transact_one(tx) returns an error
  • Clean up properly if transact_one(tx) returns an error
  • Add gas usage assertions in deploy_call, precompiles, and transact tests
  • Handle None case in get_info_from_raw_tx and update related logic, invalid chain ID shouldn't return error, and just ignore the transaction
  • Sort transactions by index in Brc20ProgDatabase
  • Update comment to clarify placeholder usage for block hash in get_transaction_and_block_hash_with_overrides
  • Rename getBtcTxId to getTxId for consistency in function naming
  • Update public API (serde -> serde_core)
  • ensure pending transactions are committed, cleared, and reorganized in Brc20ProgDatabase
  • allow "mainnet" and "bitcoin" to be used interchangeably
  • update generate_block to accept block_hash as a parameter
  • reorder block hash setting to avoid race conditions
  • revert version bump, this is automated now
  • bump version to 0.13.0 in Cargo.toml
  • serialize transaction type into hex
  • update homepage URL in Cargo.toml
  • update pre-release hook to correctly format CHANGELOG.md generation
  • update pre-release hook to correctly generate and add CHANGELOG.md
  • update read method signature to use lifetime annotation
  • update read method signature to use lifetime annotation
  • remove test data files for BRC20 balance calls
  • bump version to 0.11.4
  • remove flag from RawBytes#value() function
  • add step to build with no default features in CI workflow
  • bump version to 0.11.3
  • update keccak256 import from revm to alloy
  • bump version to 0.11.2
  • update public_api snapshot
  • Correct version string format in web3_client_version method
  • Improve error handling in contract address resolution
  • Refactor Brc20ProgDatabase to remove redundant timestamp and gas methods, they are stored in the block database already
  • Migrate back the bip322 crate after the fix and remove the fork
  • Simplify reorg logic in BlockHistoryCache and UintED serialization/deserialization
  • Enhance bytecode handling with error checks during deserialization and decoding
  • Update inconsistent docs
  • Fix test_reorg_all_blocks to reorg only 10 blocks
  • Bump version of brc20-prog to 0.10.4
  • Use a fork of bip322 for a patch where it crashes
  • Ensure latest value retrieval from the cache is never empty, and reorgs also panic if there's an attempt to empty the cache
  • Update BITCOIN_RPC_URL to use address
  • Replace "DB Error" with a static error message and panic instead of returning an error, as it's not recoverable
  • Couple of bug fixes for reorg handling on database
    • Use get_next_block_height method in DatabaseCommit methods to fix an off-by-one error in reorgs, which might incorrectly keep old values

    • Use stored values to create the cache for cache misses, otherwise reorgs might cause data loss if reorg happens on a value that hasn't been updated in a long time, and updated just before a reorg happens

    • Chore: bump rocksdb version to 0.24.0 (librocksdb was updated in this version)

    • Chore: bump brc20-prog version to 0.10.3

  • Bump version to 0.10.2 for brc20-prog
  • Refactor Bitcoin RPC validation logic and remove unnecessary checks
  • Clarify initialization process for BRC20_Controller and empty block handling in README
  • Bump version to 0.10.1 and ensure raw_block_ed module is conditionally compiled
  • Update Discord (badge was broken) and add Telegram link to README
  • Prefix hex-encoded strings with "0x" in RawBlock methods
  • Correct comment formatting for RawBytes struct documentation
  • Handle extra padding in base64 decoding for inscription data
  • Correctly increment transaction index in pending transaction execution
  • Update DB_VERSION to 5 in configuration
  • Update ecrecover call to use adjusted v value and remove ignore from tests
  • Ignore raw tx tests as they fail to recover the correct address at the moment
  • Remove conditional flags for some imports
  • Remove optional flag from nada and zstd-safe dependencies, as clients can use these to generate encoded data
  • Rename db.rs > brc20_prog_database.rs
  • Update LastBlockInfo to track total processing time
  • Reduce gas usage from 100k to 20k for bip322 precompile
  • Check if the transaction is in the future in last sat location precompile
  • Readjust stack size to 4MB in GitHub Actions workflow (again)
  • Update alloy-sol-types dependency version to 1.1.0
  • Update result field name from resultBytes to output in transaction receipt
  • Remove unused import of E from std::f32::consts
  • Return an error if block range is too large for eth_getLogs
  • Better eth_getLogs topic and address handling
  • Remove unused rust-embed feature "include-exclude"
  • Use dotenvy instead of unmainained dotenv, avoid embedding the source for brc20_controller contract to reduce binary size
  • Simplify assertions in tests for AccountInfoED conversions
  • Serialize block nonce to full hex length
  • Make authorisation logic exclusive to brc20_ methods, and fix TraceED encoding
  • Simplify serialization and encoding of BytecodeED by using original_bytes
  • Return BytecodeED from eth_getCode, so it gets serialised without the trailing zeroes
  • Handle missing contract addresses by using Address::ZERO in Brc20ProgApiServer
    This way, receipts for invalid inscriptions are also recorded in the chain
  • Move Id import to tests
  • Return correct ID ffrom RpcAuthAllowEth
  • Fix HttpNonBlockingAuth for allow_all(...)
  • update BRC20 locked pkscript precompile result for integration tests
  • Include data in returned error instance for eth_call and eth_estimateGas
  • prevent deadlock in get_block_by_hash by releasing the mutex after accessing it
  • rename block_hash field to blockHash for consistency in serialization
  • convert contract bytecode using to_string to add the 0x prefix
  • rename block_hash field for serialization
  • mine_blocks genesis block count
  • Update import path for ERC20 contract in BobCoin.sol
  • Show float numbers in test_generator.py
  • Make get_range end key comparison exclusive

Other

  • Add changelog file (generated by cargo smart-release)
  • remove release configuration file and associated pre-release hooks to allow regeneration
  • Add support for raw signed transaction inscriptions and update relevant methods in README

Refactor

  • Do a first run on eth_estimateGasMany and eth_estimateGas for an early exit in case calls fail
  • change inscription_id and inscription_byte_len from Option to required fields in API and update database structures
  • remove legacy fields from TxReceiptED struct
  • generate receipts for invalid transactions
  • Update public api and fix a visibility error
  • Add configurable request/response size limits and batch request settings to RPC server
  • Remove batch request limit from RPC server configuration
  • ditto, improve error message for Bitcoin RPC status check failure
  • Improve error handling in Bitcoin RPC status check
  • Rename DB_PATH to BRC20_PROG_DB_PATH for consistency in env.sample
  • Enhance RPC server configuration with request/response size limits and batch request settings
  • Print the error message in get_brc20_balance function when it fails
  • Bump version to 0.11.1 and update binary name in Cargo.toml
  • Update eth_getCode to return 0x if there's no code present for compliance
  • Modify eth_call in RpcServer to return 0x or the revert reason for compliance
  • Add legacy fields back in BlockResponseED and TxReceiptED for backwards compatibility
  • Add input size limit warning for bip322_verify_precompile to prevent excessive resource usage
  • Enhance ConfigDatabase by adding caching and implementing flush functionality
  • Use catch_unwind for BRC20 balance server checks to handle potential panics gracefully
  • update public api
  • Simplify balance retrieval by removing error handling from get_brc20_balance function, it now panics when balance server is unreachable or provides invalid data instead of silencing it
  • Remove brc20 event simulator test
  • Replace CHAIN_ID with Brc20ProgConfig.chain_id in various modules to enable using different chain IDs for signet and mainnet
  • Update raw tx handling to use alloy TxLegacy type
  • Fix cargo doc
  • Move conditional compilation for Brc20ProgDatabase to a separate line
  • Disable logging for common block retrieval calls to reduce noise
  • Update database version from 3 to 4 in configuration, as previous gas values need adjustment
  • Move gas usage and history size constants to the global package, adjust gas usage for precompiles sending an RPC
  • Update BRC20 types to replace EncodedBytes with InscriptionBytes and EthBytes for improved clarity and functionality
  • Update decompression buffer to use dynamic Vec instead of fixed array
  • Update benchmark functions by removing unused transaction detail cases, add min stack requirement to readme
  • Add more test cases for bitcoin mainnet rpc tests and run bitcoin rpc tests sequentially
  • Update BTC precompiles to use faster transaction and block height retrieval methods
  • Refactor to use a "Transaction" instance instead of "GetRawTransactionResult" in BTC precompiles
  • Remove redundant names from instrument attributes in Brc20ProgApiServer implementation
  • Refactor Brc20ProgApiClient methods to include 'brc20_' and 'eth_' prefixes and update related client calls
    • Adjusted public API snapshot to match the updated API method signatures.
  • Reorganise engine into its own package alongside the evm, and public api types into the API package, add a public_api test to check for changes in the API
  • Replace Wrapper types with ED types in API and RPC server
  • Handle JSON-RPC error code -5 without panicking
  • Remove minimum gas limit constant and handle inscription byte length in tests
  • Move dotenv call to Brc20ProgConfig
  • Update BRC20Precompiles initialization to use a constructor
  • Simplify revm integration
    • Add a TracingInspector to use later
    • block.prevrandao is now set to current block hash
  • Simplify EVM setup
  • Make tests ignore the result of .initialise(...)
  • Remove unused test imports, use alloy_primitives instead of revm re-exports
  • Split db/mod.rs into db.rs / mod.rs, rename server_instance.rs to engine.rs
  • Use read/write locks for evm database and propagate errors into the RPC layer to wrap and display
    • Renamed ServerInstance to BRC20ProgEngine (will rename the file in a follow-up to keep the diff)
    • Refactored error handling for various operations e.g. transaction validation and block finalization.
    • Created a shared data structure for access to database and block information, RwLocks now allow faster/parallelised reads
  • Update module visibility across various files
  • Rename variables for clarity in various modules
  • Simplify data decoding in decode_brc20_balance_result function
  • Refactor calls to unwrap() for Result/Options to avoid unnecessary panics
    Use rust-bitcoincore-rpc library for precompiles
  • remove unused FromHex import in brc20_controller
  • rename verify_block_does_not_exist to require_block_does_not_exist
  • change account parameter type to AddressWrapper in get_transaction_count method
  • add chain_id and tx_type fields to TxED and update related structures, run cargo fmt
  • change transaction index parameter to be optional
  • update EthCall struct to make 'from' field optional and use zero in contract calls if from is empty
  • Use LogResponse for eth_getTransactionReceipt for correct eth JSON-RPC format and add v,r,s fields to eth_getTransaction* methods
  • streamline byte, string and address conversions to use into() and parse() for type flexibility and consistency
  • simplify encode method to return Vec directly instead of Result, as it never fails
  • update Brc20ProgApi call and estimate_gas methods to use EthCall struct and optional input data
  • Rename block count variables for clarity

Test

  • opt-in live signet getTxDetails precompile test

    • test(btc): opt-in live signet getTxDetails precompile test

    Exercises the getTxDetails Bitcoin-RPC precompile end to end against a
    real signet node (no mocking). Opt-in via BRC20_RUN_BTC_RPC_TESTS=1 plus
    signet RPC env; skips cleanly otherwise so it is safe in CI.

  • cover validate_config and from_env

    • test(config): cover validate_config and from_env logic

    Config parsing/validation had zero coverage. Adds tests for
    validate_config (valid config, auth-without-credentials rejection,
    empty RPC URL, Bitcoin-URL requirement gated on fail_on_bitcoin_rpc_error)
    and from_env (mainnet vs testnet chain-id selection, malformed numeric
    env falling back to default).

  • cover controller helpers and deposit/withdraw/balance

    • test(brc20_controller): cover address verification and balance decoding

    Unit tests for verify_brc20_contract_address (accepts canonical
    address, rejects other/unparseable) and decode_brc20_balance_result
    (None and malformed data decode to zero, valid ABI word decodes to its
    value).

  • cover block/tx/code/storage reads and eth_getLogs filtering

    • test(eth): cover block/tx/code/storage read methods

    Integration test exercising the eth_* read surface that lacked
    coverage: eth_getBlockByNumber/ByHash, eth_getBlockTransactionCountBy*,
    eth_getTransactionByHash/ByBlockNumberAndIndex/ByBlockHashAndIndex,
    eth_getTransactionCount, eth_getCode and eth_getStorageAt, all
    cross-checked after a deploy + finalise.

  • cover reorg, commit_to_db, clear_caches

    • test(engine): cover reorg happy-path, no-op, and rejection cases

    reorg() had zero coverage despite being a correctness-critical state
    rollback path. Adds inline tests for: rollback discarding blocks above
    the valid height, reorg-to-tip being a no-op, and rejection of
    future/too-far-behind targets without mutating the chain.

  • Update tests

  • add unit test for Prague spec BLS precompiles inclusion

  • Change out of order test to send 3 transactions

  • Split benchmark for BTC precompiles

  • Split env setup in tests into .env.mainnet and .env.signet

  • Add mainnet precompile tests (works with a .env setup)

  • Add microsecond and second tests for gas processing times in opcode generator test

  • Migrate precompile benchmarks to Rust

  • Move test utilities to their own package, add a benchmark for calling the bip322_verify precompile
    Refactored test files to utilize the new test-utils crate for loading files and spawning test servers.

  • Add BRC20 balance test and a deploy/call test

  • Update test cases to use a non-zero value for inscription byte length

  • Add serialization test for BlockResponseED

  • Add unit tests for BRC20ProgEngine and RpcServer methods

  • Add unit test for HttpNonBlockingAuth allow_all method

New Features (BREAKING)

Commit Statistics

  • 460 commits contributed to the release.
  • 260 commits were understood as conventional.
  • 6 unique issues were worked on: #4, #5, #6, #7, #8, #9

Commit Details

view details
  • #4
    • Eth_call* and eth_estimateGas* methods now wait for block finalisation instead of failing when they are called mid-block (f29eadb)
  • #5
    • Cover reorg, commit_to_db, clear_caches (ca65149)
  • #6
    • Cover block/tx/code/storage reads and eth_getLogs filtering (b644673)
  • #7
    • Cover controller helpers and deposit/withdraw/balance (2dc9d3a)
  • #8
    • Cover validate_config and from_env (234d874)
  • #9
    • Opt-in live signet getTxDetails precompile test (e99469e)
  • Uncategorized
    • Update dependencies and tests for bip322 (b0d89c8)
    • Update warning note for Bitcoin mainnet status (1afb8e2)
    • Update nonce retrieval to use get_account_nonce for pending transactions (befe688)
    • Release brc20-prog v0.15.13 (ae07752)
    • Release brc20-prog v0.15.12 (ac30d94)
    • Update eth_get_storage_at to return full length hex-encoded storage values (8b248c9)
    • Release brc20-prog v0.15.11 (f1bc659)
    • Merge pull request #3 from bestinslot-xyz/estimateGas-with-binary-search (a568d19)
    • Update expected gas response values in test cases (0896feb)
    • Do a first run on eth_estimateGasMany and eth_estimateGas for an early exit in case calls fail (c38c7b0)
    • Keep midpoint instead of gas_used * 2 as upper bound to cover some edge cases (228b912)
    • Enhance gas estimation logic with binary search adjustments (8d73788)
    • Clean up properly if transact_one(tx) returns an error (790d806)
    • Clean up properly if transact_one(tx) returns an error (c22a945)
    • Add gas estimation with binary search for estimateGas and estimateGasMany (c99264a)
    • Release brc20-prog v0.15.10 (6680035)
    • Implement eth_callMany with precompile data injection (a3b5e0b)
    • Update API (4b9eaf7)
    • Release brc20-prog v0.15.9 (d3abded)
    • Change tx hash computation to use RLP hash from a set block height (cd803cc)
    • Release brc20-prog v0.15.8 (c171eca)
    • Sort transactions by index in block processing (5081745)
    • Release brc20-prog v0.15.7 (6ef2f79)
    • Update tests (3e9e395)
    • Add debug methods for block trace string retrieval (831b9b6)
    • Reapply "chore: Update dependencies and add new packages" (d82c0f5)
    • Revert "chore: Update dependencies and add new packages" (5826548)
    • Release brc20-prog v0.15.6 (1468800)
    • Update dependencies and add new packages (970a4f5)
    • Add gas usage assertions in deploy_call, precompiles, and transact tests (a399035)
    • Release brc20-prog v0.15.5 (8036477)
    • Handle None case in get_info_from_raw_tx and update related logic, invalid chain ID shouldn't return error, and just ignore the transaction (660e8c0)
    • Release brc20-prog v0.15.4 (021c973)
    • Cargo fmt (feed95e)
    • Sort transactions by index in Brc20ProgDatabase (039b215)
    • Update comment to clarify placeholder usage for block hash in get_transaction_and_block_hash_with_overrides (8679b42)
    • Add PrecompileData struct and update eth_callMany and eth_estimateGasMany methods to include precompile_data parameter (9fcaaff)
    • Implemented eth_callMany and eth_estimateGasMany (fe608c3)
    • Add description for txpool_content method in README.md (af79d9c)
    • Update brc20_deploy, brc20_call, brc20_transact method parameters to include op_return_tx_id field (b29317f)
    • Rename getBtcTxId to getTxId for consistency in function naming (9680ce2)
    • Release brc20-prog v0.15.3 (d549690)
    • Update public API (serde -> serde_core) (ca33922)
    • Release brc20-prog v0.15.2 (8ee2ff4)
    • Add revm-bytecode dependency to avoid bringing the whole revm for non-server version and update imports (4550e0e)
    • Release brc20-prog v0.15.1 (6eb813f)
    • Update alloy to v1.1.0, revm to v31.0.0, remove revm_state and refactor accordingly (e368453)
    • Release brc20-prog v0.15.0 (6436246)
    • Enhance BRC20 precompiles with op_return_tx_id support (enabled after the prague upgrade) (ca2b864)
    • Release brc20-prog v0.14.0 (3fe1e1e)
    • Change inscription_id and inscription_byte_len from Option to required fields in API and update database structures (c9178ef)
    • Ensure pending transactions are committed, cleared, and reorganized in Brc20ProgDatabase (3209728)
    • Add unit test for Prague spec BLS precompiles inclusion (b46ec70)
    • Use the block height parameter to eth_call and eth_estimateGas (5a4019c)
    • Allow "mainnet" and "bitcoin" to be used interchangeably (57a447d)
    • Implement dynamic EVM spec selection based on block number and network (ad4bb4b)
    • Update generate_block to accept block_hash as a parameter (3e44cc0)
    • Reorder block hash setting to avoid race conditions (33b4ec2)
    • Release brc20-prog v0.13.0 (d17add8)
    • Remove BRC20 balance precompile (c80def9)
    • Revert version bump, this is automated now (467fd9a)
    • Merge branch 'main' into remove-brc20-balance-precompile (950de40)
    • Bump version to 0.13.0 in Cargo.toml (e684694)
    • Release brc20-prog v0.12.0 (ab1f806)
    • Remove legacy fields from TxReceiptED struct (f268486)
    • Serialize transaction type into hex (b4ac41b)
    • Merge branch 'main' into remove-brc20-balance-precompile (83b59e5)
    • Update homepage URL in Cargo.toml (c0b38c0)
    • Release brc20-prog v0.11.6 (0d8a3b1)
    • Add changelog file (generated by cargo smart-release) (6fa1bf4)
    • Remove release configuration file and associated pre-release hooks to allow regeneration (0b0ae25)
    • Update pre-release hook to correctly format CHANGELOG.md generation (2a3adbd)
    • Update pre-release hook to correctly generate and add CHANGELOG.md (746773d)
    • Release v0.11.6 (851059d)
    • Add release configuration file for versioning and changelog generation (bb3d7cd)
    • Release brc20-prog version 0.11.5 (15b4150)
    • Generate receipts for invalid transactions (834e75c)
    • Enhance error handling for eth_call and eth_estimateGas with status codes and detailed messages in RPC server (f2e7d27)
    • Update read method signature to use lifetime annotation (a238d89)
    • Update read method signature to use lifetime annotation (27722d3)
    • Remove test data files for BRC20 balance calls (4e6f326)
    • Remove BRC20 balance precompile and update version to 0.12.0 (9376868)
    • Bump version to 0.11.4 (72780b6)
    • Remove flag from RawBytes#value() function (ef1b4cb)
    • Add step to build with no default features in CI workflow (4719fe7)
    • Bump version to 0.11.3 (1eda8ad)
    • Update keccak256 import from revm to alloy (d1b383b)
    • Bump version to 0.11.2 (0dad5dd)
    • Update public_api snapshot (dc47f65)
    • Correct version string format in web3_client_version method (a764b65)
    • Implement web3_ api in Brc20ProgApi (a15371e)
    • Update public api and fix a visibility error (d00d3c2)
    • Add configurable request/response size limits and batch request settings to RPC server (3c088b9)
    • Remove batch request limit from RPC server configuration (ce01730)
    • Ditto, improve error message for Bitcoin RPC status check failure (7347175)
    • Improve error handling in Bitcoin RPC status check (5a85fd8)
    • Rename DB_PATH to BRC20_PROG_DB_PATH for consistency in env.sample (663c929)
    • Enhance RPC server configuration with request/response size limits and batch request settings (b1d3f3a)
    • Simplify cargo run command in README (1c437ff)
    • Print the error message in get_brc20_balance function when it fails (68dfbed)
    • Bump version to 0.11.1 and update binary name in Cargo.toml (74341ad)
    • Update eth_getCode to return 0x if there's no code present for compliance (c57ac66)
    • Modify eth_call in RpcServer to return 0x or the revert reason for compliance (0ffa630)
    • Add legacy fields back in BlockResponseED and TxReceiptED for backwards compatibility (3216212)
    • Add input size limit warning for bip322_verify_precompile to prevent excessive resource usage (0ae78d4)
    • Add warning about ticker case sensitivity and format in README (86edafc)
    • Enhance ConfigDatabase by adding caching and implementing flush functionality (c005115)
    • Use catch_unwind for BRC20 balance server checks to handle potential panics gracefully (cec0ccb)
    • Update public api (f537928)
    • Simplify balance retrieval by removing error handling from get_brc20_balance function, it now panics when balance server is unreachable or provides invalid data instead of silencing it (4d98b44)
    • Improve error handling in contract address resolution (b249ec9)
    • Add caution note about basic auth and secure connections in README (5d83dd1)
    • Add a global values database to Brc20ProgDatabase and disallow multiple reorgs by storing a global maximum reorg height (29fbf41)
    • Refactor transaction handling by removing unnecessary fields, and simplify the code (a575638)
    • Cargo fmt (fdeb14e)
    • Refactor Brc20ProgDatabase to remove redundant timestamp and gas methods, they are stored in the block database already (29aae3c)
    • Migrate back the bip322 crate after the fix and remove the fork (c3222bd)
    • Simplify reorg logic in BlockHistoryCache and UintED serialization/deserialization (56b4846)
    • Enhance bytecode handling with error checks during deserialization and decoding (f3fa71f)
    • Update inconsistent docs (ea9a168)
    • Fix test_reorg_all_blocks to reorg only 10 blocks (e28f5d5)
    • Bump version of brc20-prog to 0.10.4 (a1e1d8d)
    • Use a fork of bip322 for a patch where it crashes (dbf69a7)
    • Ensure latest value retrieval from the cache is never empty, and reorgs also panic if there's an attempt to empty the cache (123ad4e)
    • Update BITCOIN_RPC_URL to use address (57bf493)
    • Replace "DB Error" with a static error message and panic instead of returning an error, as it's not recoverable (f221717)
    • Couple of bug fixes for reorg handling on database (3d15658)
    • Bump version to 0.10.2 for brc20-prog (fa00152)
    • Refactor Bitcoin RPC validation logic and remove unnecessary checks (e0c605a)
    • Clarify initialization process for BRC20_Controller and empty block handling in README (4c6521b)
    • Add support for raw signed transaction inscriptions and update relevant methods in README (2ffeb5b)
    • Add brc20_transact method for sending raw signed transactions and update parameter names (af4cea8)
    • Bump version to 0.10.1 and ensure raw_block_ed module is conditionally compiled (ce4d985)
    • Update Discord (badge was broken) and add Telegram link to README (a502861)
    • Prefix hex-encoded strings with "0x" in RawBlock methods (53c126d)
    • Cargo fmt (f5619cb)
    • Add debug_getRaw* methods in the API and update version to 0.10.0 (443887a)
    • Correct comment formatting for RawBytes struct documentation (b471516)
    • Remove brc20 event simulator test (45b1f50)
    • Add "brc20_transact" method to indexer methods list (4727a33)
    • Store and serve v,r,s fields from raw signed transactions, bump version to 0.9.0 (a6dba4b)
    • Replace CHAIN_ID with Brc20ProgConfig.chain_id in various modules to enable using different chain IDs for signet and mainnet (ceb5be8)
    • Handle extra padding in base64 decoding for inscription data (85bc09e)
    • Change out of order test to send 3 transactions (4472824)
    • Correctly increment transaction index in pending transaction execution (b0ab81e)
    • Update DB_VERSION to 5 in configuration (90c5477)
    • Enhance BRC2.0 with pending transaction management (2222ed3)
    • Update raw tx handling to use alloy TxLegacy type (90862fb)
    • Update ecrecover call to use adjusted v value and remove ignore from tests (4884c89)
    • Ignore raw tx tests as they fail to recover the correct address at the moment (9302691)
    • Remove conditional flags for some imports (78aad64)
    • Remove optional flag from nada and zstd-safe dependencies, as clients can use these to generate encoded data (eab6136)
    • Support using RawBytes and Base64Bytes types together in BRC2.0 API (69af83e)
    • Run cargo fmt (2e6a846)
    • Add brc20_transact endpoint to handle signed evm transactions, currently disabled via config (8e835b8)
    • Fix cargo doc (6a93ee0)
    • Move conditional compilation for Brc20ProgDatabase to a separate line (8c401a9)
    • Rename db.rs > brc20_prog_database.rs (b8ec391)
    • Gate server-side features under "server" feature, this reduces client compilation time (b27ea7c)
    • Bump version to 0.6.2 (e2deec2)
    • Implement TryFrom trait for AddressED and FixedBytesED, add is_zero method to UintED (bbab3bf)
    • Disable logging for common block retrieval calls to reduce noise (1b8f1f5)
    • Implement TryFrom trait for AddressED and FixedBytesED, add is_zero method to UintED (3f7d346)
    • Update database version from 3 to 4 in configuration, as previous gas values need adjustment (7977ab0)
    • Move gas usage and history size constants to the global package, adjust gas usage for precompiles sending an RPC (be92664)
    • Update BRC20 types to replace EncodedBytes with InscriptionBytes and EthBytes for improved clarity and functionality (0c8fcca)
    • Remove warning about zstd compression stack size requirement from README, as it now uses Vec instead of a fixed size slice (4070f7f)
    • Update decompression buffer to use dynamic Vec instead of fixed array (795598b)
    • Update benchmark functions by removing unused transaction detail cases, add min stack requirement to readme (4cf9d21)
    • Split benchmark for BTC precompiles (3af3234)
    • Add more test cases for bitcoin mainnet rpc tests and run bitcoin rpc tests sequentially (d1968ee)
    • Update BTC precompiles to use faster transaction and block height retrieval methods (3163cd4)
    • Refactor to use a "Transaction" instance instead of "GetRawTransactionResult" in BTC precompiles (3bd0d87)
    • Add EVM call gas limit configuration (b1753a6)
    • Split env setup in tests into .env.mainnet and .env.signet (34b6d41)
    • Add mainnet precompile tests (works with a .env setup) (c37b2ef)
    • Update LastBlockInfo to track total processing time (846099b)
    • Add microsecond and second tests for gas processing times in opcode generator test (fb09f27)
    • Reduce gas usage from 100k to 20k for bip322 precompile (49b03e4)
    • Check if the transaction is in the future in last sat location precompile (25550c2)
    • Migrate precompile benchmarks to Rust (d40c627)
    • Move test utilities to their own package, add a benchmark for calling the bip322_verify precompile (a8ceb60)
    • Update README to include note about BRC20 indexer integration and enhance operation checks for deploy/call inscriptions (774f3db)
    • Add BRC20 balance test and a deploy/call test (2166b8b)
    • Readjust stack size to 4MB in GitHub Actions workflow (again) (753be5a)
    • Remove redundant names from instrument attributes in Brc20ProgApiServer implementation (8d5d7b8)
    • Refactor Brc20ProgApiClient methods to include 'brc20_' and 'eth_' prefixes and update related client calls (7e22c45)
    • Reduce GitHub Actions stack size to 2MB, move long responses in precompile tests into assets (417fb86)
    • Implement some precompile tests in rust (fe23eb3)
    • Bump rust stack size in github actions for zstd tests (1e56078)
    • Reorganise engine into its own package alongside the evm, and public api types into the API package, add a public_api test to check for changes in the API (41daefd)
    • Add zstd compression support with 1MB buffer size, reorganise some internal variables (e697503)
    • Update package metadata in Cargo.toml (f9e8770)
    • Update module documentation for clarity and completeness (988c239)
    • Move documentation for Brc20ProgApi to top-level module (d5edb5a)
    • Made brc20-prog into a library with a binary, bumped version to 0.4.0 (b1e0ae4)
    • Increase block gas limit to 4MB (block size) * 12K (gas per byte) (7e0fb6f)
    • Move super:: imports to crates (8a163e0)
    • Generate std json output for example contracts (4cd41de)
    • Refactor integration tests: Remove legacy files and update tests to use BRC20ProgClient (0398501)
    • Replace Wrapper types with ED types in API and RPC server (42efe3e)
    • Add deserialization for various data types (5579f73)
    • Update alloy-sol-types dependency version to 1.1.0 (1eee9df)
    • Add functionality to retrieve inscription ID by contract address, bump db version to 2 (7f38574)
    • Update result field name from resultBytes to output in transaction receipt (98bb8ff)
    • Remove unused import of E from std::f32::consts (b5f82f0)
    • Run cargo fmt (495186d)
    • Handle JSON-RPC error code -5 without panicking (6bcbe48)
    • Return an error if block range is too large for eth_getLogs (4df9d97)
    • Update test cases to use a non-zero value for inscription byte length (b4ea3f2)
    • Better eth_getLogs topic and address handling (a462db4)
    • Remove minimum gas limit constant and handle inscription byte length in tests (efc0083)
    • Update dependencies and update RPC authorization middleware to latest jsonrpsee library (4a894c6)
    • Handle nada encoding in inscription data (not activated until compression activation height is set) (1408102)
    • Add PROTOCOL_VERSION to configuration and database validation (752f5f0)
    • Remove unused rust-embed feature "include-exclude" (c7f75c8)
    • Use dotenvy instead of unmainained dotenv, avoid embedding the source for brc20_controller contract to reduce binary size (7cfc17b)
    • Move dotenv call to Brc20ProgConfig (bf97068)
    • Update environment variable name for BITCOIN_RPC_NETWORK, and use a denylist for RPC method auth (2b5311f)
    • Add dotenv support and update dependencies (4b36434)
    • Validate bitcoin network using bitcoin rpc (180b24e)
    • Bump version of brc20_prog to 0.2.0 (3de713d)
    • Refactor Encode/Decode to use buffers for efficiency and code simplicity (64fe806)
    • Simplify assertions in tests for AccountInfoED conversions (391139c)
    • Refactor data structures and conversions for AddressED, BytecodeED, BytesED, and UintED (495a46c)
    • Add EVM_RECORD_TRACES to env sample (ee9d7b7)
    • Add an environment variable to toggle trace recording (73784c2)
    • Add serialization test for BlockResponseED (3a82185)
    • Serialize block nonce to full hex length (ae96ee4)
    • Make authorisation logic exclusive to brc20_ methods, and fix TraceED encoding (a5ef831)
    • Record internal transactions and add an API endpoint to return them (b831c7d)
    • Update BRC20Precompiles initialization to use a constructor (26f7b5f)
    • Simplify revm integration (5181b9c)
    • Bump revm, alloy deps and migrate ABI decoding and precompile logic (f31be5c)
    • Simplify EVM setup (1a5ae11)
    • Make tests ignore the result of .initialise(...) (843c464)
    • Add unit tests for BRC20ProgEngine and RpcServer methods (1e8c50c)
    • Refactor contract call methods to redirect invalid transactions to 0xdead (401fb70)
    • Add inscription_id field to TxED and implement API method to retrieve it (c2f23df)
    • Remove unused test imports, use alloy_primitives instead of revm re-exports (75d6a13)
    • Split db/mod.rs into db.rs / mod.rs, rename server_instance.rs to engine.rs (f1570b4)
    • Use read/write locks for evm database and propagate errors into the RPC layer to wrap and display (4cff994)
    • Simplify serialization and encoding of BytecodeED by using original_bytes (19b4d14)
    • Return BytecodeED from eth_getCode, so it gets serialised without the trailing zeroes (96f0012)
    • Update module visibility across various files (add636a)
    • Handle missing contract addresses by using Address::ZERO in Brc20ProgApiServer (35125ed)
    • Enhance contract metadata handling in BRC20 controller (41c348b)
    • Updated BRC20_Controller.sol to deploy Wrapped BRC-20 on new ticker mints. (015e0df)
    • Upgrade Solidity compiler to version 0.8.28 and update related dependencies (654c8e2)
    • Enable optimizer and update output file generation in BRC20_Controller contract (1324f62)
    • Add a js script for BRC20_Controller contract to fix solc version (0e96a89)
    • Move Id import to tests (829efa5)
    • Return correct ID ffrom RpcAuthAllowEth (c2317a2)
    • Add unit test for HttpNonBlockingAuth allow_all method (541d41c)
    • Fix HttpNonBlockingAuth for allow_all(...) (c2cb483)
    • Implement HTTP Basic Authentication middleware for RPC server, it allows all methods that start with eth_*, and rejects everything else if the request is unauthenticated (97b2d66)
    • Add basic HTTP authentication support to the brc20_prog RPC server (ea2bd18)
    • Bump version of brc20_prog to 0.1.1 in Cargo files (492065f)
    • Add data_or_input method to EthCall for improved data handling (000db49)
    • Rename variables for clarity in various modules (1ae9167)
    • Simplify data decoding in decode_brc20_balance_result function (15e1650)
    • Ignore transactions that happen in the future in tx details precompile (d17c4f6)
    • Refactor calls to unwrap() for Result/Options to avoid unnecessary panics (8c19cd0)
    • Update BRC20 locked pkscript precompile result for integration tests (5e9bf0f)
    • Fixed pkscript pubkey things on get_locked_pkscript_precompile (bf614ce)
    • Last_sat_location_precompile location finder now uses do-while (add1527)
    • Get_brc20_balance now uses u128 which is more than brc20 balance limit (264*1018) (f661579)
    • Remove unused FromHex import in brc20_controller (f2f18c4)
    • Change ticker parameter type to Bytes in transaction loading functions and add ticker_as_bytes utility function (d8d93bb)
    • Rename verify_block_does_not_exist to require_block_does_not_exist (c4efb09)
    • Include assigned gas limit in txes (6e58ca1)
    • Verify new blocks don't already exist in the database, and generate new hashes for new blocks with hashes 0x00..00 (b0a754c)
    • Add gas_price and syncing methods to Brc20ProgApi (to enhance explorer compatibility) (f7e2a7b)
    • Change account parameter type to AddressWrapper in get_transaction_count method (912dfef)
    • Include data in returned error instance for eth_call and eth_estimateGas (66495a5)
    • Add chain_id and tx_type fields to TxED and update related structures, run cargo fmt (fb475d4)
    • Change transaction index parameter to be optional (4045ddb)
    • Prevent deadlock in get_block_by_hash by releasing the mutex after accessing it (1a56564)
    • Update EthCall struct to make 'from' field optional and use zero in contract calls if from is empty (c02d371)
    • Use LogResponse for eth_getTransactionReceipt for correct eth JSON-RPC format and add v,r,s fields to eth_getTransaction* methods (67f5b48)
    • Streamline byte, string and address conversions to use into() and parse() for type flexibility and consistency (1ca98dc)
    • Simplify encode method to return Vec directly instead of Result, as it never fails (ac703fd)
    • Rename block_hash field to blockHash for consistency in serialization (dd53a43)
    • Update Brc20ProgApi call and estimate_gas methods to use EthCall struct and optional input data (48a52bd)
    • Convert contract bytecode using to_string to add the 0x prefix (657a99b)
    • Rename block_hash field for serialization (bbd9669)
    • Update README.md (be1d4b2)
    • Update README with warnings about BRC20 balance server and BIP322_Verifier contract limitations (25afd99)
    • Made simulate test 5 byte ticker aware, added new log events to brc20 deployer test contract (5b2ab10)
    • Mine_blocks genesis block count (17aa2a9)
    • Refactor Brc20ProgApi to use EthCall struct for gas estimation and update get_balance method signature (7d1410c)
    • Add hyper and tower-http dependencies; implement CORS middleware for RPC server, add eth_accounts and net_version (a0c37db)
    • Add block_timestamp to TxReceiptED and related methods for enhanced transaction data (1de55ad)
    • Refactor BIP322 verification precompile to use bytes instead of strings for parameters (11935ba)
    • Add inscription_byte_len parameter to BRC20 methods and update gas limit calculations (8eb2905)
    • Update BRC20 balance check to use non-empty byte arrays for testing (32414d1)
    • In precompiles, use bytes32 for packing txids, and bytes for packing pkscripts. Update the tests and the docs for them. (1853af1)
    • Reorg to current block height is allowed and no-op (c9b69a0)
    • Remove gas usage for get_block_height, add ignored is_full parameter for eth compatibility (cbf0a49)
    • Refactor performance test to include contract_inscription_id in calls and improve error handling (be791e4)
    • Split brc20_addTxToBlock into brc20_deploy, and brc20_call RPC methods for easier contract address and inscription id handling (b12a057)
    • Changes to make simulate_brc20_events.py running (083a672)
    • Remove BRC20 balance server status logging and add status check before server initialisation (19738e1)
    • Update default Bitcoin RPC URL to use port 38332 (a3064a7)
    • Update default Bitcoin network to signet in btc_utils (95a177d)
    • Add version method to Brc20ProgApi to return current package version (fda8651)
    • Update README.md to clarify environment variable requirements for precompiled contracts and add clang installation instructions (6116a0c)
    • Run cargo fmt (771dd01)
    • Add logging for get_logs, call, and estimate_gas methods in RpcServer (45c8b55)
    • Refactor GetLogsFilter to use B256Wrapper for topics field (1eae2d2)
    • Refactor GetLogsFilter to use AddressWrapper for address field (a2f32ff)
    • Refactor JSON-RPC API to use wrapper types to consolidate sanitisation/deserialisation (d4ba35f)
    • Update expected hex output in BTC precompile tests (843822b)
    • Make precompile functions use a shared HTTP client for improved reliability (b86882b)
    • Refactor performance test to load transaction data dynamically and update precompile test selection (210c487)
    • Refactor BRC20 precompile functions to use alloy_sol_types (cad81d1)
    • Add input prompts to pause on failed precompile tests (9fbb46e)
    • Update TxReceiptED to serialize result_bytes as an empty string when None (126cce0)
    • Avoid overflow in gas usage in case of errors (708a2e7)
    • Use tx.json files in Precompile Test (c297035)
    • Add support for inscription IDs in BRC20 transactions and receipts (51640e6)
    • Check results of precompiles in precompile test (887a00c)
    • Check Bitcoin RPC and BRC20 Server status at startup (4a46fc3)
    • Ignore u64::MAX for gas usage, and rename BRC20 Helper contract functions to match precompile signatures (ec82f24)
    • Add better error handling and sanitisation for BTC precompiles (9215baa)
    • Move btc precompile tests to signet (2a6d050)
    • Fix bytecode comparison and encoding to handle padding bytes correctly (8f7d042)
    • Change order in precompile test (20df50d)
    • Refactor BRC20 precompile to use ureq for HTTP requests and add another test that runs all precompiles (ff4ff9f)
    • Refactor precompile interpreter result handling (da28dad)
    • Upgrade to revm 20.0.0, add more tests for precompiles (95c514e)
    • Comment out direct precompile call (fc30e4e)
    • Implement direct static calls for BRC20_Prog contract (b1f7a01)
    • Add transaction failure handling and clean up gas usage output in performance tests (173db03)
    • Add a performance test for BTCTxDetails precompile (fbcea56)
    • Make BTCTxDetailsPrecompile retrieve block height via another RPC in case it's not indexed (7ba3049)
    • Update sample environment variables for Bitcoin RPC URL and network (13921f8)
    • Use an environment variable for the RPC server address (0c93bb5)
    • Update README to specify JSON-RPC server address for BRC2.0 (2f47eef)
    • Add License and Notice (87eabea)
    • Enhance README with detailed return descriptions for BRC20 JSON-RPC methods (d1e412a)
    • Format code blocks in README for better readability (e36c5dd)
    • Update README to reflect BRC2.0 branding and enhance module description (1ab94f0)
    • Update README to include Rust requirement (fdf4cab)
    • Add indexer integration guide to README (c855e09)
    • Update README to clarify HTTP call for BRC20 balance retrieval (20d64d6)
    • Clarify README description of JSON-RPC methods functionality (725f10d)
    • Update README (8e363fb)
    • Add functions to get last satoshi location and locked pkscript in example helper contract (34afc47)
    • Add github actions and skip BTC tests if the environment variables are not set (2db6b81)
    • Add empty README and remove unnecessary files (c58678d)
    • Run cargo fmt (f01095a)
    • Add transfer tx for sample erc20 contract (eb03c03)
    • Update import path for ERC20 contract in BobCoin.sol (1903298)
    • Add an ERC20 contract example (fd9d875)
    • Show float numbers in test_generator.py (09d4de4)
    • Rename block count variables for clarity (0eae24b)
    • Make get_range end key comparison exclusive (5c0b892)
    • Add genesis height parameter to BRC20 initialisation methods and update related logic (5abf996)
    • Refactor module structure by reorganizing EVM and BRC20 controller modules, removing obsolete files (171fc07)
    • Improve error message for call_contract (faebece)
    • Run cargo fmt (3e314c3)
    • Set max lock block count to 65535 in GetLockedPkScript precompile and implement tests for edge cases (40b3c5a)
    • Add environment variable checks for Bitcoin RPC in BTC transaction details precompile tests (dff41b8)
    • Add error handling for invalid lock block count in GetLockedPkScript precompile (f596d4a)
    • GetLockedPkScript now uses environment variables to change network (14d0bb1)
    • Implement GetLockedPkScript precompile with locking script logic (7319f51)
    • Refactor precompiles: rename and reorganize modules for clarity and add empty GetLockedPkScript precompile (c730724)
    • Add error handling for missing block height in BTC precompile (04ba5e9)
    • Revert "Return empty values instead of an error for coinbase transactions" (8e05f7d)
    • Return empty values instead of an error for coinbase transactions (5553a91)
    • Add support for error handling of coinbase transactions in LastSatLocationPrecompile and update related tests (6720dca)
    • Remove unnecessary usize casts (377a1b4)
    • Implement Last Sat Location precompile, and reorganise the precompiles module (a58281d)
    • Add multiple test cases for btc precompile that also checks gas usage (838606d)
    • Return all vin/vouts as arrays in BTC precompile (8501e5e)
    • Add commit and clear_cache methods for db_block_number_to_block (5f7cc30)
    • Remove unused requirements file from test_generator (6e470aa)
    • Run cargo fmt (971e3cf)
    • Format some python code (3e4ccb9)
    • Refactor some integration tests to match current spec, and update brc20_deposit and brc20_withdraw methods to return TxReceipt (96f959f)
    • Change log level from DEBUG to INFO for deposit, withdrawal, and balance checks (329e775)
    • Improve error handling in BRC20 balance decoding function to return zero on failure (dc82f7d)
    • Refactor Makefiles to streamline ABI file formatting (b7a4ba9)
    • Add BRC20 program helper Makefile and update contract interfaces; enhance error handling in precompile (6b45637)
    • Implement BTC precompile (1cf22ea)
    • Update expected result in BRC20 balance precompile integration test (according to the hashing balance server in OPI brc20 indexer) (c8f3e0e)
    • Add BRC20 balance precompile and integration test; update dependencies (4b51a21)
    • Fix integration tests and enhance RPC server logging; store block responses in database for faster retrieval (fc2f881)
    • Implement trace logging in brc20 RpcServer methods (345c7d1)
    • Fix function selector for balanceOf in BRC20 precompile (2bf7622)
    • Add brc20_initialise method for genesis block (e2f83de)
    • Move BRC20_Prog contract and interfaces to examples/brc20_prog_helper directory (d668bbb)
    • Add a Simple solidity contract and a compiler script that outputs deployment and call inscriptions (7b477b3)
    • Add BIP322 precompile and an integration test for it (e82272d)
    • Format BRC20_Prog contract (9a75bde)
    • Add BRC20, BTC, and BIP322 precompiles with initial implementations and interfaces (a3f0581)
    • Fix hex formatting in LogED serialization to remove '0x' prefix (86e527e)
    • Fix u128 order in mint and burn transactions; remove unused deposit and withdrawal endpoints (ae0762f)
    • Add BRC20 balance retrieval (909cac0)
    • Implement BRC20 controller with mint and burn transaction handling (d37fcaa)
    • Add empty deposit & withdrawal methods in ServerInstance for future use (b4d7938)
    • Handle optional values in transaction and block retrieval; provide defaults to prevent panics (1b514ad)
    • Update gas limit and nonce calculation in block response; improve contract bytecode retrieval handling (8b544a4)
    • Handle missing parent hash by providing a default value of zeroed bytes (e8219e3)
    • Update block parent hash handling and improve block hash generation logic (so every block has a unique non-zero hash) (a905c59)
    • Implement Merkle tree for transaction roots and add block #0 (a149a81)
    • Update miner field type to AddressED and change nonce serialization to StrictPfx (5f88944)
    • Add contract compilation script and update package.json scripts (0e3db78)
    • Fix a comment in run_custom.js (c1c2544)
    • Update contract assets folder path (f1eff8e)
    • Refactor contract loading to use JSON format (f268e4f)
    • Deploy BRC20_Controller as part of server initialisation (9e8d475)
    • Add gas limit parameter to get_evm and update eth_call to enforce gas limit (3c2a8e9)
    • Refactor transaction receipt handling to include result type and reason in TxReceiptED (2b8ded1)
    • Update LogED encoding test to reflect new byte length (4083362)
    • Update LogED structure to include log index (d571c60)
    • Add BlockResponseED type and update getBlockBy* RPC methods (66877f0)
    • Add transaction count RPCs (f45fd08)
    • Add eth_getLogs endpoint and LogResponseED type for log retrieval (e88bdae)
    • Rename brc20 indexer RPC method prefixes to brc20_ (17ae93d)
    • Implement eth_getTransactionBy* and eth_getTransactionReceipt endpoints (a562668)
    • Flush databases after commit (ada0a5c)
    • Update Databases to use RocksDB (11948a0)
    • Remove old caches from memory after deletion (934878c)
    • Rename EnvWrapper to TestEnvWrapper for clarity (b239630)
    • Refactor test environment creation and deletion (440334b)
    • Add default-members to workspace in Cargo.toml (a195c5c)
    • Rename package from brc20_finance to brc20_prog (50e7299)
    • Remove unused dependencies (6cf9267)
    • Refactor BlockDatabase to use BytesWrapper for database keys (fa5b7e5)
    • Add new JSON-RPC methods for gas estimation and storage retrieval, update existing method signatures (efca574)
    • Don't store unchanged values in the history caches to minimise disk usage (37142fd)
    • Refactor some RPC methods to use hexadecimal format and update related tests, add some empty/static eth_ endpoints (1b1deb0)
    • Add Brc20ProgApi trait with JSON-RPC methods and remove HTTP server (59b1f5f)
    • Fix bug in run_custom.js to accept null responses (0cf6c51)
    • Add JSON-RPC server support and refactor main server and tests (cb9882b)
    • Add RPC server implementation and update finalise_block method to handle optional start time (7c1e898)
    • Add logging for transaction addition to the next block (d9f263a)
    • Extract methods into ServerInstance object to prepare for RPC server setup (6373e7a)
    • Refactor database access in transaction handling functions (6e541f0)
    • Refactor EVM module structure and update dependencies (b5a747c)
    • Remove .DS_Store files (2d4ae61)
    • Migrate db crate to use block history cache (9867a77)
    • Implement block history cache [WIP] (9b5b39a)
    • Fix decode for db/src/types/address_ed.rs (f67f8cf)
    • Add tests for types with traits BytesEncode/BytesDecode (33a5afa)
    • Split database types and format files (dd383cd)
    • Set up to work with localhost and add requirements.txt and npm files (fcd6e9c)
    • Added package.json (976e9ec)
    • Added integration_test (4a700fa)
    • Removed Mutex'es (9db0c5e)
    • Added cache with mutexes (504828c)
    • Initial commit, no reorg protection, only code memory cache (8a3494e)

Don't miss a new brc20-programmable-module release

NewReleases is sending notifications on new releases.