Skip to content

forta-network/forta-bot-sdk

Repository files navigation

Forta Detection Bot SDK and CLI

npm version

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 [email protected]

Changelog

0.1.48

  • 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 and source 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 using handleAlert 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 and sequence npm commands to starter projects
  • Updated BotSubscription to make alertId optional and also allow passing alertIds
  • Fixed grpc proto definitions
  • Added support for handleAlert handler
  • Added support for specifying labels on findings
  • Return findings from runHandlersOnBlock and runHandlersOnTransaction methods
  • Remove sha3 dependency from Python SDK
  • Bug fix to the fetch_jwt method in the Python sdk
  • Added new methods fetchJwt, decodeJwt and verifyJwt to Typescript sdk for generating and verifying a jwt token from a scan node
  • Added new method fetch_jwt, decode_jwt, and verify_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 and logs commands as npm scripts of starter projects
  • Updated uploadImage function to accept image tag suffix
  • Added two new cli commands: info and logs
  • 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 to Finding
  • 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 of TransactionEvent.filterLog
  • Include address in result of TransactionEvent.filterFunction
  • Add Finding.from alias method for Finding.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 and gasUsed properties from TransactionEvent
  • 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 run npm 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 and filterFunction commands
  • Add --nocache option to forta-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 of filterLog 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 and filterFunction convenience methods to TransactionEvent in SDK
  • Export web3 object from Python SDK
  • Add get_web3_provider convenience method to Python SDK
  • Add filter_log and filter_function convenience methods to TransactionEvent 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 and get_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 and disable
  • 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 from name) and version 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 to TraceResult
  • Add Info option to FindingType 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 and createBlockEvent utility methods for tests
  • Fix receipt addresses to be lowercase
  • Add unit tests for CLI commands: init, run and publish
  • 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 to ipfsGatewayAuth
  • Add publish npm script to starter project
  • Remove .npmignore file after initializing starter project
  • Add getJsonRpcUrl and getFortaConfig 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 and publish
  • Initialize Javascript and Typescript SDK
  • Initialize Javascript and Typescript high gas starter project