Chore
- update dependencies and tests for bip322
- Update API
- Update dependencies and add new packages
- Updated
alloyto version 1.1.2 and related packages to their latest versions. - Updated
hyperto version 1.8.1 andjsonrpseeto version 0.26.0. - Updated
revmand related packages to their latest versions. - Updated
criterionandinstato their latest versions. - Updated
tower-http,tracing, andtracing-subscriberto their latest versions. - Updated
test-utilsdependencies to match the main project.
- Updated
- 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.
- Updated dependencies in Cargo.toml to their latest versions, including:
- Enhance BRC20 precompiles with op_return_tx_id support (enabled after the prague upgrade)
- Updated
get_evmto acceptcurrent_op_return_tx_idand pass it toBRC20Precompiles. - Modified hardfork activation heights for mainnet and signet.
- Introduced
get_op_return_tx_id_precompileto 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_idparameter. - Enhanced tests to validate behavior with and without op return transaction IDs.
- Updated
- 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
TxEDstruct to use the newSignaturestruct, simplifying the transaction data structure. - Refactored
TxReceiptEDby removing unused fields and adjusting the encoding/decoding logic accordingly. - Modified the
BRC20ProgEngineto utilize the newSignaturestruct 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.
- Updated the
- 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.rsin a separate binary setup with the "server" feature required - eth_getTransactionCount now correctly returns the account nonce
- Bumped version to 0.7.0
- Removed redundant input field from
- 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)
- Remove BRC20 balance precompile
- Remove BRC20 balance precompile and update version to 0.12.0
Associated proposal: https://github.com/bestinslot-xyz/brc20-proposals/blob/main/002-prog-brc20-precompile-removal/index.md
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)