- Fixed usage of JWT for internal service communications across MSs.
- New available endpoint /transaction/{TX_UUID}/speed-up to retry transaction with a defined gas increment.
- New available endpoint /transaction/{TX_UUID}/call-off resend a transaction with same nonce,empty data and 10% more gas than previous job.
- Stop printing chain-proxy access logs errors when
ACCESSLOG_ENABLED=false
. - Fixed issue in
tx-sender
forwarding jwt whenKEY_MANAGER_API_KEY
is set.
- Reduced
tx-listener
services request toorchestrate-api
can be reduced by usage of an optional in-memory cache. To be enabled set a duration usingAPI_CACHE_TTL
environment variable. - Reduced database I/O usage by ~60%.
- Added missing delete account endpoint into HTTP API.
- Fixed data migration of transaction request data.
- Remove unnecessary and verbose logging.
- Update block number only after fetching 3 blocks
- Fixed
externalTxEnabled
chain update.
- Forward user's JWT token to the transaction-sender microservice
- Fixed panic on tx-sender updating status of jobs with
owner_id
different than nil. - Migrated faucet DB table to use TEXT for every VARCHAR column.
- Validate existence of
creditorAccount
andchainRule
before creating a new Faucet
- Fixed Chain Proxy issues caused by additional header being added to forwarded request.
- Fixed wrong error code returned importing duplicate accounts
- Fixed missing
nonce
attribute in transaction request payloads. - Fixed go-web3 panic error passing HEX as bytes.
- Compatibility with all versions of Solidity <= 0.8.11.
- The ABI of smart contracts must now be registered in the contract registry before they can be used in transactions.
contractName
is now a mandatory argument of contract transactions.contractTag
is now an optional argument of contract transactions.
- Removed authentication fallback behaviour to token
subject
when custom claims are enabled.
- Fixed issue where Job's, Transaction's and Account's properties are removed when values are not set in update request payload.
- Fixed ACCESS_LOG enabling/disabling toggle feature.
- Fixed lowercase ethereum addresses in response payloads.
- Fixed issue where smart contracts using Solidity structs could not be registered in the contract registry.
- Fixed unintended persisted claims over ongoing requests when using custom claims.
- Support for
username
as additional constraint to control access over resources. Impersonation would be allowed only via API-KEY. - Support for nested tenants in custom claims, for example tenant
tenantOne:groupOne:subGroupOne
will have access to resources owned bytenantOne
andtenantOne:groupOne
andtenantOne:groupOne:subGroupOne
would be able to impersonate same tenants. - Support Token Issuer Servers to validate JWTs. Environment variable
AUTH_JWT_ISSUER_URL
- Support for new transaction pricing mechanism (eip-1559)
- Support for go-quorum privacy privacy enhancements:
privacyFlags
,mandatoryFor
- Support for go-quorum private transaction with optional
privateFrom
. - Integration of Quorum Key Manager as replacement of Orchestrate Key Manager service
- Attach contract name and tag into transaction receipts when bytecode matches to one of the registered contracts.
- Attach contract information into transaction receipts on every new contract deployment and contract events.
- Quorum Key Manager StoreID can be defined on every account creation.
Orion
was removed in favor ofEEA
as PrivateTxManager in chain APIs- Following ETH transaction properties types has been BigInt updated:
value
expects an HEX value prefix by "0x" instead of BigInt string.gasPrice
expects an HEX value prefix by "0x" instead of BigInt string.nonce
expects an uint64 instead of Integer string.gas
expects an uint64.
- Following Faucet request params has been modified:
amount
expects an HEX value prefix by "0x" instead of BigInt string.maxBalance
expects an HEX value prefix by "0x" instead of BigInt string.
- In case of empty Orchestrate custom claims, token subject
sub
is used astenant_id:username
. - Command
migration init
is merged intomigration up
. - Removed usage of
AUTH_JWT_CERTIFICATE
in favor ofAUTH_JWT_ISSUER_URL
andAUTH_JWT_AUDIENCE
- Renamed
AUTH_JWT_CLAIMS_NAMESPACE
byAUTH_JWT_ORCHESTRATE_CLAIMS
. - In case of empty Orchestrate custom claims token subject,
sub
is used astenant_id
. - Removed endpoints
/accounts/{address}/sign
and/accounts/{address}/verify-signature
in favor of/accounts/{address}/sign-message
and/accounts/verify-message
accordingly to EIP-191 standards - Removed support of zk-snarks account in favor of Quorum Key Manager implementation
- Removed
warning
log removed when the events of the receipt are not found in the contract registry - Fix contract deployment bug where arguments of the constructor are not parsed correctly
- Fixed Chain Proxy issues caused by additional header being added to forwarded request.
- Fix sequence of primary key when a DB copy is performed using the
copy-db
command
- Commit the offset to Kafka broker every time a message is processed
- Migrations fail when key-manager is disabled
- Key Manager fails with incorrect error code when key-manager is disabled
- Tx-sender exits updating jobs already in final status
- Tx-sender does not send message on
tx-recover
topic when there are persistent connectivity issues with RPC nodes
- Transaction
priority
is applied as expected - Sender is not funded in raw transactions
- Incorrect server name verification using Postgres in
verify-ca
mode - Tx-sender exits sending Tessera private transaction with invalid 'from'
- Added logging in key-manager microservice
- Wrong tenant assigment when API_KEY was not defined
- Missing decoded logs in kafka receipts for private contract events
- Database overload querying for registered chains
- Incorrect transition to FAILED status on rpc node connectivity issues
- Tx-listener do not exit when it fails to fetch private receipt from Besu node
- Support for metadata on chains
- Signing and verifying payload for zk-snarks accounts
- Hexadecimal string validation for signing endpoints
- Renew token with the Vault Agent where the Key Manager is watching "VAULT_TOKEN_FILE". The Key Manager supports plaintext token and wrapped-token
- Metric value for job status update CREATED to STARTED
- Improve Tx Listener performance to update transaction status to MINED
- New environment variable,
KAFKA_NUM_CONSUMERS
, to launch multiple kafka consumer intx-sender
- Support for new Postgres setting
DB_POOL_TIMEOUT
- Major API and DB performance improvements
- Prevent unnecessary HTTP retries on internal API calls
- Hanging issue during synchronization from block 0
- Tx-listener crashes on heavy load over API
- Import identities from connected KeyManager Vault
- Fail to send raw transaction with not empty data field
- Rename deprecated naming from application metrics
orchestrate_transaction_scheduler_*
toorchestrate_api_*
- Merge all previous APIs into a single service:
orchestate-api
, encapsulating every individual previous API services - Merge
tx-crafter
andtx-signer
into thetx-sender
worker to reduce maintenance complexity - Support usage of
in-memory
as storage for Nonce Manager
- Release the Identity API on top of the
orchestate-api
, allowing dynamic CRUD operation over accounts whose keys are stored in Vault - Integrate Orchestrate HashiCorp Vault plugin to enhance security
- Add application metrics:
orchestrate_transaction_scheduler_job_latency_seconds
: Histogram of job latency between status (second). Except PENDING and MINED (Histogram)orchestrate_transaction_scheduler_mined_latency_seconds
Histogram of latency between PENDING and MINED (Histogram)orchestrate_transaction_listener_current_block
: Last block processed by each listening session (Counter)
- Support for enable/disable metric modules
- Harmonize and improve logging across all services
- Ability set a custom keep alive interval for Postgres clients
- New environment variable
KAFKA_CONSUMER_GROUP_NAME
to set the Kafka consumer group name
- Incorrect metrics counting for 429 http responses
- Remove
account-generator
andaccount-generated
topics - Worker services
tx-crafter
andtx-signer
were removed along with topicstx-crafter
andtx-sender
- Jaeger reporting disabled by default
- Remove support for environment variable
ABI
to register solidity contract at start - Remove support for environment variable
SECRET_PKEY
to import ethereum keys to key vault at start - Remove support for environment variable
CHAIN_REGISTRY_INIT
to import chains at start - Remove support for GRPC contract API
- Remove API services
contract-registry
,transaction-scheduler
andchain-registry
- Replace support of
kv-v2
HashiCorp engine byorchestrate
engine. - Environment variable
CHAIN_REGISTRY_CACHE_TTL
renamed toPROXY_CACHE_TTL
- Environment variable
TRANSACTION_SCHEDULER_URL
replaced byAPI_URL
- Environment variable
CONTRACT_REGISTRY_URL
replaced byAPI_URL
- Environment variable
CHAIN_REGISTRY_URL
replaced byAPI_URL
IMPORTANT ! In order to perform this migration, Orchestrate has to be running on the latest minor version of v2.5.x and been migrated to latest v21.1.x
In order to migrate your keys from kv-v2
engine to orchestrate
engine you need to follow the next steps:
- Instantiate HashiCorp with both engines enabled:
kv-v2
andorchestrate
- Initialize the following environment variables:
VAULT_ADDR
: HashiCorp host URLVAULT_TOKEN_FILE
: Disk path to token file valid for orchestrate engineVAULT_MOUNT_POINT
: Mounting point of orchestrate engineVAULT_V2_SECRET_PATH
: Path where keys are stored in kv-v2 engineVAULT_V2_MOUNT_POINT
: Mounting point of kv-v2 engineVAULT_V2_TOKEN_FILE
: Disk path to token file valid for kv-v2 engine
- Execute command:
$> orchestrate key-manager migrate import-secrets
In previous versions of orchestrate each of the API service data was stored in a independent postgres DB.
Therefore to update to v21.1.x
you need to import each of service's data by following the next steps for
each of the service DBs you intend to migrate:
- Initialize the following:
DB_MIGRATION_SERVICE
: Source DB service name. Values are: "chain-registry", "transaction-scheduler" and "contract-registry"DB_MIGRATION_ADDRESS
: Source DB URLDB_MIGRATION_DATABASE
: Source DB nameDB_MIGRATION_USERNAME
: Source DB usernameDB_MIGRATION_PASSWORD
: Source DB password
- Execute command:
$> orchestrate api migrate copy-db