Forta Detection Bot SDK and CLI
Visit forta.org to learn more about Forta. See the developer documentation at docs.forta.network
Bug Bounty
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
Changelog
0.1.48
- Expose
filterLog
as standalone utility function - Check for empty addresses when populating
TransactionEvent.addresses
field - Add support for label embeddings
0.1.47
- Updated JS and TS starter project dependencies
0.1.46
- Updated axios and jest dependencies
0.1.45
- Added support for
uniqueKey
field in labels
0.1.44
- Added Network chain ID enum for Base
0.1.43
- Added support for
healthCheck
method to report bot health - Updated grpc proto definition
0.1.42
- Added support for external bots with the
sendAlerts
SDK method
0.1.41
- Add retry logic when querying alerts for bots that use
handleAlert
0.1.40
- Reduce the page size of queries made when fetching alerts for bots using
handleAlert
0.1.39
- Reduce the size of queries made when fetching alerts for bots using
handleAlert
0.1.38
- Fix Python
Finding.unique_key
parsing
0.1.37
- Increase grpc response size limits
- Fix Python pagination issue when querying
get_labels
- Improve error messages from alerts API
0.1.36
- Updated type definition for FindingSource
0.1.35
- Updated starter project templates
0.1.34
- Added new optional fields
uniqueKey
andsource
to findings - Added support for new bot manifest fields:
longDescription
,licenseUrl
,promoUrl
0.1.33
- Updated Python child process behaviour to exit on exceptions
0.1.32
- Added
getLabels
method to query the Forta API for labels
0.1.31
- Fixed issue when publishing bot manifest without speciyfing chain settings
0.1.30
- Expanded alert query lookback window when running handleAlert locally
- Improved sharding configuration validation
0.1.29
- Added new
stake
CLI command to stake on a detection bot - Fixed Python error handling to also reject NodeJS promise
0.1.28
- Added retry logic for CLI
run
command to improve reliability of running bots locally - Improved error handling for Python bots by showing stack traces
0.1.27
- Fixed issue for parsing findings returned from Python bots
0.1.26
- Added new FindingType value of Scam
0.1.25
- Added bot license
0.1.24
- Increased max findings response size to 250kB
- Updated label metadata field to be a map
0.1.23
- Added metadata field to Labels
0.1.22
- Updated
run
command to wait 60 seconds between alert queries for bots usinghandleAlert
locally
0.1.21
- 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
0.1.20
- Fixed labels parsing when querying for alerts
0.1.19
- 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
0.1.18
- Updated grpc proto definition to add
alert.chainId
field
0.1.17
- 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
0.1.16
- 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
0.1.15
- Fixed grpc proto definitions
0.1.14
- Added support for
handleAlert
handler - Added support for specifying labels on findings
0.1.13
- Return findings from
runHandlersOnBlock
andrunHandlersOnTransaction
methods
0.1.12
- Remove
sha3
dependency from Python SDK
0.1.11
- Bug fix to the
fetch_jwt
method in the Python sdk
0.1.10
- 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
0.1.9
- 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
0.1.8
- 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
0.1.7
- 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
0.1.6
- Fix sort order for
chainIds
array
0.1.5
- Fix issue for CLI
publish
command when querying account balance
0.1.4
- 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
0.1.3
- Set
contextPath
when building image
0.1.2
- Update starter project README
0.1.1
- Update AgentRegistry contract ABI
- Add default
chainIds
to starter project package.json - Fix Python starter project dependencies
0.1
- 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
0.0.41
- Set default
jsonRpcUrl
to https://cloudflare-eth.com - Expose CLI functionality using
configureContainer
method - Update CLI
init
command to also runnpm install
0.0.40
- 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
0.0.39
- 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
0.0.38
- Add
description
field to agent manifest from package.json
0.0.37
- 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
0.0.36
- Add support for specifying
chainIds
in package.json
0.0.35
- Add support for private agents with the
setPrivateFindings
method - Deprecate
everestId
attribute of Finding - Deprecate
filterEvent
method of TransactionEvent
0.0.34
- Add disk caching for the
forta-agent run
command
0.0.33
- 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
0.0.32
- Actually fix published npm artifact
0.0.31
- Fix published npm artifact
0.0.30
- Fix agent publishing on Apple M1 chips
0.0.29
- 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
0.0.28
- Fix handling of
network
value in Python SDK
0.0.27
- 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
0.0.26
- Use more raw JSON-RPC calls in CLI
0.0.25
- 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
0.0.24
- Add new CLI command:
keyfile
- Add
keyfile
npm script to starter projects - Add
repository
field to agent manifest
0.0.23
- Transition to Polygon agent registry
- Provide default value for
agentRegistryJsonRpcUrl
- Fix agent existence check
0.0.22
- 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
0.0.21
- Improve
init
command to ensure that keystore folder exists
0.0.20
- Fix CLI keyfile resolution
0.0.19
- 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
0.0.18
- Fix published npm artifact
- Add npm script to ensure we build before publishing
0.0.17
- 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
0.0.16
- 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
0.0.15
- Update Typescript starter project npm scripts to build before running
0.0.14
- Add unit tests to Python starter project
- Fix
hex_to_int
Python SDK convenience method - Fix Typescript starter project Dockerfile
0.0.13
- Update Python starter project requirements.txt
- Improve Python error handling
0.0.12
- 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
0.0.11
- 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
0.0.10
- Update
jest
type definitions to v27.0.1
0.0.9
- 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
0.0.8
- 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
0.0.7
- 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
0.0.6
- Use new agent registry contract
0.0.5
- Hardcode scanner poolId
- Rename
ipfsGatewayAuthHeader
config property toipfsGatewayAuth
- Add
publish
npm script to starter project
0.0.4
- Remove .npmignore file after initializing starter project
0.0.3
- 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
0.0.2
- 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
0.0.1
- Initialize repository
- Initialize CLI commands:
init
,run
andpublish
- Initialize Javascript and Typescript SDK
- Initialize Javascript and Typescript high gas starter project