Visit forta.org to learn more about Forta. See the developer documentation at docs.forta.network
We have a bug bounty program on Immunefi. Please report any security issues you find through the Immunefi dashboard, or reach out to tech@forta.org
- Expose
filterLog
as standalone utility function - Check for empty addresses when populating
TransactionEvent.addresses
field - Add support for label embeddings
- Updated JS and TS starter project dependencies
- Updated axios and jest dependencies
- Added support for
uniqueKey
field in labels
- Added Network chain ID enum for Base
- Added support for
healthCheck
method to report bot health - Updated grpc proto definition
- Added support for external bots with the
sendAlerts
SDK method
- Add retry logic when querying alerts for bots that use
handleAlert
- Reduce the page size of queries made when fetching alerts for bots using
handleAlert
- Reduce the size of queries made when fetching alerts for bots using
handleAlert
- Fix Python
Finding.unique_key
parsing
- Increase grpc response size limits
- Fix Python pagination issue when querying
get_labels
- Improve error messages from alerts API
- Updated type definition for FindingSource
- Updated starter project templates
- Added new optional fields
uniqueKey
andsource
to findings - Added support for new bot manifest fields:
longDescription
,licenseUrl
,promoUrl
- Updated Python child process behaviour to exit on exceptions
- Added
getLabels
method to query the Forta API for labels
- Fixed issue when publishing bot manifest without speciyfing chain settings
- Expanded alert query lookback window when running handleAlert locally
- Improved sharding configuration validation
- Added new
stake
CLI command to stake on a detection bot - Fixed Python error handling to also reject NodeJS promise
- Added retry logic for CLI
run
command to improve reliability of running bots locally - Improved error handling for Python bots by showing stack traces
- Fixed issue for parsing findings returned from Python bots
- Added new FindingType value of Scam
- Added bot license
- Increased max findings response size to 250kB
- Updated label metadata field to be a map
- Added metadata field to Labels
- Updated
run
command to wait 60 seconds between alert queries for bots usinghandleAlert
locally
- Added support for address bloom filters on AlertEvent
- Updated CLI errors to return a non-zero exit code
- Changed Alert interface into a class
- Increased maximum number of findings returned in a response to 50
- Fixed labels parsing when querying for alerts
- Added support for running shards i.e. multiple bot instances
- Added labels to alerts
- Updated handleAlert subscriptions to allow specifying filter by chainId
- Updated grpc controller to ensure initialize handler only invoked once
- Updated grpc proto definition
- Updated grpc proto definition to add
alert.chainId
field
- Added support for
remove
field for Labels - Fixed
filter_function
bug in Python SDK - Fixed
fetchJwt
SDK method to return mock value during development - Fixed
fetchJwt
JS SDK method to return string instead of object - Added
repository
URL to starter project package.json
- Updated grpc proto definitions for Labels
- Updated
run --file
command to also accept hashes - Add
alert
andsequence
npm commands to starter projects - Updated
BotSubscription
to makealertId
optional and also allow passingalertIds
- Fixed grpc proto definitions
- Added support for
handleAlert
handler - Added support for specifying labels on findings
- Return findings from
runHandlersOnBlock
andrunHandlersOnTransaction
methods
- Remove
sha3
dependency from Python SDK
- Bug fix to the
fetch_jwt
method in the Python sdk
- Added new methods
fetchJwt
,decodeJwt
andverifyJwt
to Typescript sdk for generating and verifying a jwt token from a scan node - Added new method
fetch_jwt
,decode_jwt
, andverify_jwt
to Python sdk for generating and verifying a jwt token from a scan node - Limit size of findings returned from handleBlock and handleTransaction callbacks
- Use forta ipfs node for
info
command - Added new method
getAlerts
to Typescript sdk to that fetches alerts using forta's alert graphql api - Added new method
get_alerts
to Python sdk to that fetches alerts using forta's alert graphql api - Fixing docker build issue
- Updated chainId validation of
run
command to print out warning instead of throwing error - Added
info
andlogs
commands as npm scripts of starter projects - Updated
uploadImage
function to accept image tag suffix
- Added two new cli commands:
info
andlogs
- Validate chainId of jsonRpcUrl when running bot
- Generate unique bot id when initializing bot
- Adjust block polling time based on chainId when running bot locally
- Fix sort order for
chainIds
array
- Fix issue for CLI
publish
command when querying account balance
- Update gRPC agent.proto to add
Finding.addresses
- Add support for
addresses
field toFinding
- Add verification for account balance and ownership when running
publish
CLI command - Provide default gas estimates when interacting with registry smart contract functions
- Include
logIndex
in result ofTransactionEvent.filterLog
- Include
address
in result ofTransactionEvent.filterFunction
- Add
Finding.from
alias method forFinding.fromObject
- Set
contextPath
when building image
- Update starter project README
- Update AgentRegistry contract ABI
- Add default
chainIds
to starter project package.json - Fix Python starter project dependencies
- Update gRPC agent.proto to deprecate
TransactionEvent.Receipt
- Update SDK to remove
receipt
,status
andgasUsed
properties fromTransactionEvent
- Add
getTransactionReceipt
convenience method to SDK - Update CLI
run
command to not fetch transaction receipts - Update starter projects to detect for large Tether transfers
- Update terms of use URL
- Set default
jsonRpcUrl
to https://cloudflare-eth.com - Expose CLI functionality using
configureContainer
method - Update CLI
init
command to also runnpm install
- Fix Python SDK support for new chains
- Add terms of use prompt to CLI
init
command - Update starter project Dockerfile to include line to enable logging
- Add
keyfilePassword
config field for CI/CD pipelines - Set default
ipfsGatewayUrl
to https://ipfs.forta.network - Update
getJsonRpcUrl
to not throw error when running unit tests - Update agent image build process to always target amd64 architecture
- Add
description
field to agent manifest from package.json
- Add support for specifying multiple addresses in
filterLog
andfilterFunction
commands - Add
--nocache
option toforta-agent run
command to disable writing to cache - Fix
forta-agent run
command to process blocks sequentially when listening for realtime data
- Add support for specifying
chainIds
in package.json
- Add support for private agents with the
setPrivateFindings
method - Deprecate
everestId
attribute of Finding - Deprecate
filterEvent
method of TransactionEvent
- Add disk caching for the
forta-agent run
command
- Add support for specifying multiple transactions/blocks for the
forta-agent run
command - Include CLI version in published manifest
- Add
getEthersBatchProvider
utility function to Javascript SDK - Export the
keccak256
utility function from Javascript and Python SDK
- Actually fix published npm artifact
- Fix published npm artifact
- Fix agent publishing on Apple M1 chips
- Add
address
field to result offilterLog
method - Fix
from
property in agent manifest - Increase gas price for transactions from CLI commands
- Add check to ensure agent documentation is not empty
- Fix handling of
network
value in Python SDK
- Change base Docker image for starter projects to
node12-alpine
- Export
ethers
object from Javascript SDK - Add
getEthersProvider
convenience method to SDK - Add
filterLog
andfilterFunction
convenience methods toTransactionEvent
in SDK - Export
web3
object from Python SDK - Add
get_web3_provider
convenience method to Python SDK - Add
filter_log
andfilter_function
convenience methods toTransactionEvent
in Python SDK - Add
agentId
config property to support Forta Connect publishing - Include results of
push
command in publish.log - Improve CLI keyfile lookup
- Fix CLI exit when running Python agents
- Don't export
getFortaConfig
andget_forta_config
from SDK
- Use more raw JSON-RPC calls in CLI
- Add new CLI command:
push
- Replace web3.js with ethers.js
- Use raw JSON-RPC calls to fetch blocks and receipts in CLI
- Add limit of 5 alerts to starter projects
- Add new CLI command:
keyfile
- Add
keyfile
npm script to starter projects - Add
repository
field to agent manifest
- Transition to Polygon agent registry
- Provide default value for
agentRegistryJsonRpcUrl
- Fix agent existence check
- Add new CLI commands:
enable
anddisable
- Increase gas for transactions from CLI commands
- Remove duplicated
BlockEvent
properties - Add obfuscation step to Javascript and Typescript starter project Dockerfile
- Improve
init
command to ensure that keystore folder exists
- Fix CLI keyfile resolution
- Make config file global by default (with option to override locally)
- Fix starter project npm scripts to support Windows
- Move
agentId
(derived fromname
) andversion
to package.json - Remove
documentation
config property and hardcode to README.md - Improve
run
command to not scan over same block - Add project URLs to npm and PyPi pages
- Fix published npm artifact
- Add npm script to ensure we build before publishing
- Add
initialize()
handler to SDK - Add
output
field toTraceResult
- Add
Info
option toFindingType
enum - Add more error logging to grpc controller
- Add more unit tests for CLI and SDK
- Add MIT license
- Fix handler initialization to maintain Python agent state
- Ensure that
jsonRpcUrl
is http(s) only - Fix
hex_to_int
Python SDK method to accept integers - Add error logging to grpc controller
- Update Typescript starter project npm scripts to build before running
- Add unit tests to Python starter project
- Fix
hex_to_int
Python SDK convenience method - Fix Typescript starter project Dockerfile
- Update Python starter project requirements.txt
- Improve Python error handling
- Add Python SDK
- Add Python starter project
- Fix Python agent to run in single long-running process
- Fix race condition when listening for blocks
- Improve Python error handling
- Fix receipt
status
not being set correctly - Remove
handlers
config property and hardcode agent filename
- Add
keyfile
config property to specify a keyfile when publishing - Add publish.log file to log publishing result
- Add
createTransactionEvent
andcreateBlockEvent
utility methods for tests - Fix receipt addresses to be lowercase
- Add unit tests for CLI commands:
init
,run
andpublish
- Fix websocket connection preventing clean exit of CLI
- Exclude unit tests from build
- Fix file logging to append newline character
- Update
jest
type definitions to v27.0.1
- Add agent documentation to manifest when publishing
- Add agent documentation to starter projects
- Update agent registry address
- Export more classes from SDK
- Improve error message when unable to parse config file
- Remove usage of web sockets when listening for blockchain data
- Remove unnecessary call to eth_getTransaction
- Add support for Python agents
- Add more block data to
BlockEvent
- Add unit tests for starter project
- Format addresses to be lowercase
- Improve error message when config file not found
- Hardcode Disco auth credentials
- Add retry logic if fetching transaction or receipt fails
- Add SDK support for tracing via
traceRpcUrl
config property - Add support for
--config
CLI arg to specify a config file - Add check for empty directory before initializing starter project
- Add Disco authentication when publishing
- Update filepath resolution to be OS-agnostic
- Include forta.config.json in starter project .gitignore
- Use new agent registry contract
- Hardcode scanner poolId
- Rename
ipfsGatewayAuthHeader
config property toipfsGatewayAuth
- Add
publish
npm script to starter project
- Remove .npmignore file after initializing starter project
- Add
getJsonRpcUrl
andgetFortaConfig
SDK convenience methods - Add more alias methods for
TransactionEvent
properties in SDK - Add npm scripts to starter project package.json
- Export
FortaConfig
type from SDK - Fix starter project .gitignore renaming issue when publishing npm package
- Update
init
to use existing keyfile if one exists (instead of always creating new one) - Update starter project package.json to use
forta-agent
npm package
- Initialize repository
- Initialize CLI commands:
init
,run
andpublish
- Initialize Javascript and Typescript SDK
- Initialize Javascript and Typescript high gas starter project