BREAKING CHANGES:
- Add and refactor all function/method validations on CheckTx
- Prevent transactions with invalid input/parameters/state to be included in blocks
- Change transaction data format for signature.
- Change node detail public key data type. Store key version and other metadata.
- Save all node public key versions.
- Separate node signing key and node encryption key.
- Accept ECDSA and Ed25519 key algorithms for node signing public key.
- [Query] Remove
GetNodePublicKey
method. - [Query] Remove
GetNodeMasterPublicKey
method. - Remove
on_the_fly_support
flag from (IdP) node property - Add
supported_feature_list
to node property - Add creation block height and creation chain ID to accessor state data
FEATURES:
- [Query] Add
GetNodePublicKeyList
method. - [Query] Add
GetNodeSigningPublicKey
method. - [Query] Add
GetNodeSigningMasterPublicKey
method. - [Query] Add
GetNodeEncryptionPublicKey
method. - [Query] Add
GetNodePublicKeyList
method. - Node supported feature
- Add
AddAllowedNodeSupportedFeature
method. - Add
RemoveAllowedNodeSupportedFeature
method. - [Query] Add
GetAllowedNodeSupportedFeatureList
method.
- Add
- Add
SetSupportedIALList
method. - Add
SetSupportedAALList
method. - [Query] Add
GetSupportedIALList
method. - [Query] Add
GetSupportedAALList
method.
IMPROVEMENTS:
- CometBFT v0.38.6.
- Support Tendermint block pruning by setting environment variable
TENDERMINT_RETAIN_BLOCK_COUNT
which indicates number of recent Tendermint's blocks (data) to keep. All blocks with height less than current block height minus retain block count will be deleted. - [Query] Add
accessor_type
,owner_node_id
,creation_block_height
, andcreation_chain_id
properties to result ofGetAccessorKey
.
BUG FIXES:
- Check duplicate accessor ID on
RegisterIdentity
BREAKING CHANGES:
- Change ABCI transaction format
- Include
chain_id
(string) to signature data. No longer need to copy nonce over from previous chains when migrate (given that chain ID is different and unique). This also help reduce initial data. - Change
params
data type to byte array.
- Include
- Change ABCI query format
- Change
params
data type to byte array.
- Change
SetInitData
andSetInitData_pb
methods do not require signature and nonce. (Reduce transaction size on migration.)- ABCI state key change for nonce - now it has a prefix.
- ABCI state key change for validator - change key prefix.
- Save ABCI state and set initial app hash on
InitChain
. - Support ABCI initial state loading from file on
InitChain
by setting environment variableABCI_INITIAL_STATE_DIR_PATH
.
IMPROVEMENTS:
- Add
SetInitData_pb
method - same asSetInitData
but uses protobuf as parameter instead of JSON string to reduce transaction size.
BREAKING CHANGES:
- Tendermint v0.34.19.
- IdPs cannot create an error response for closed or timed out requests.
- Remove effective datetime delay check when setting service price.
- Update
ial
,lial
, andlaal
onRegisterIdentity
when re-register identity for existing identity which has previously been revoked association. CreateAsResponse
supports0
min AS. All requested ASes are able to respond.- Add
request_type
to request data.
IMPROVEMENTS:
- Separate service price minimum effective datetime delay by service ID.
FEATURES:
- Request type
- Add
AddRequestType
method. - Add
RemoveRequestType
method. - [Query] Add
GetRequestTypeList
method.
- Add
- Suppressed identity modification notification node list
- Add
AddSuppressedIdentityModificationNotificationNode
method. - Add
RemoveSuppressedIdentityModificationNotificationNode
method. - [Query] Add
GetSuppressedIdentityModificationNotificationNodeList
method. - [Query] Add
IsSuppressedIdentityModificationNotificationNode
method.
- Add
IMPROVEMENTS:
- [DeliverTx]
RegisterNode
acceptson_the_fly_support
. - [DeliverTx]
UpdateNodeByNDID
acceptson_the_fly_support
. - [Query] Add
on_the_fly_support
flag to IdP node details. - [Query] Add
on_the_fly_support
parameter toGetIdpNodes
andGetIdpNodesInfo
. - Add
lial
andlaal
to identity info. - [DeliverTx]
RegisterIdentity
acceptslial
andlaal
. - [DeliverTx]
UpdateIdentity
acceptslial
andlaal
. - [DeliverTx] Make
ial
parameter optional forUpdateIdentity
. - [Query] Add
lial
andlaal
to result ofGetIdentityInfo
. - [Query] Add
lial
andlaal
to result ofGetIdpNodes
. - [DeliverTx] Add
CreateMessage
method. - [Query] Add
GetMessage
method. - [Query] Add
GetMessageDetail
method.
SECURITY FIXES:
- Disallow IdP nodes from creating request with data requests.
- Disallow IdP nodes from creating request with mode 1.
IMPORTANT: Security fixes mentioned above are considered breaking changes if deploy to the existing chain with transactions that violate the normal use cases (unexpected requests).
BREAKING CHANGES:
- Tendermint v0.33.3.
- [CheckTx / DeliverTx] Remove
SignData
method. AddCreateAsResponse
method.
IMPROVEMENTS:
- Update Tendermint version to v0.33.3.
- [DeliverTx]
CreateIdpResponse
acceptserror_code
. - [DeliverTx]
CreateAsResponse
acceptserror_code
. - [DeliverTx] Add
AddErrorCode
method. - [DeliverTx] Add
RemoveErrorCode
method. - [DeliverTx] Add
whitelist
array andagent
flag (only IdP) to node details. - [Query] Add
agent
flag to IdP node details. - [Query] Add
whitelist
array to node details. - [Query] Add
agent
andfilter_for_node_id
parameters toGetIdpNodes
andGetIdpNodesInfo
. - [Query] Add
whitelist
array andagent
flag toGetIdpNodes
andGetIdpNodesInfo
. - [Query] Add
GetErrorCodeList
method. - [Docker] Use golang:1.14 when building image.
- [Docker] Use alpine:3.11 when building image.
IMPROVEMENTS:
- Save Tx signature check results in CheckTx and use them in DeliverTx - Attempt to reduce DeliverTx time and CPU consumption.
- Refactor app state, key name and prefixes.
- Change internal package name.
- [Docker] Change Go version used in images from 1.12 to 1.13.
BREAKING CHANGES:
- Tendermint v0.32.1.
IMPROVEMENTS:
- Use Go modules instead of dep.
- Update Tendermint version to v0.32.1.
- [Query] Add
active
property to result ofGetNodeInfo
. - [Query] Add
ial
property to result ofGetIdpNodes
andGetIdpNodesInfo
. - [Docker] Update leveldb version to 1.22.
- [Docker] Remove default user.
- [Docker] Remove default owner and permission settings.
- [Docker] Remove
TERM
env. - [Docker] Add docker-entrypoint.sh as image entrypoint which will check existence and owner of
ABCI_DB_DIR_PATH
andTMHOME
.
OTHERS:
- [Docker] Remove
jq
andcurl
from docker image.
NOTES:
- [Docker] Docker container may be run with
-u
or--user
flag (e.g.-u 65534:65534
). In case you are using docker-compose,user
may be specified in docker-compose file (e.g.user: 65534:65534
) (see Compose file reference for more detail). - [Docker] When running docker container with non-root user, source directories that will be mounted into the container as
ABCI_DB_DIR_PATH
andTMHOME
must be created beforehand with the non-root user as owner.
BREAKING CHANGES:
- [DeliverTx] Remove
first
andhash_id
property from parameters ofRegisterIdentity
. - [DeliverTx] Add
reference_group_code
,new_identity_list
,mode_list
,accessor_id
,accessor_public_key
,accessor_type
andrequest_id
property to parameters ofRegisterIdentity
. - [DeliverTx] Remove
accessor_group_id
property from parameters ofAddAccessor
. - [DeliverTx] Add
identity_namespace
,identity_identifier_hash
, andreference_group_code
property to parameters ofAddAccessor
. - [DeliverTx] Change function name from
RevokeAccessorMethod
toRevokeAccessor
. - [DeliverTx] Add
supported_namespace_list
property to parameters ofRegisterServiceDestination
. - [DeliverTx] Add
supported_namespace_list
property to parameters ofUpdateServiceDestination
. - [DeliverTx] Remove
identity_proof
andprivate_proof_hash
property from parameters ofCreateIdpResponse
. - [DeliverTx] Remove
hash_id
property from parameters ofUpdateIdentity
. - [DeliverTx] Add
reference_group_code
,identity_namespace
andidentity_identifier_hash
property to parameters ofUpdateIdentity
. - [DeliverTx] Add
allowed_identifier_count_in_reference_group
andallowed_active_identifier_count_in_reference_group
property to parameters ofAddNamespace
. - [DeliverTx] Remove
valid_proof
property fromresponse_valid_list
in parameters ofCloseRequest
. - [DeliverTx] Remove
valid_proof
property fromresponse_valid_list
in parameters ofTimeOutRequest
. - [DeliverTx] Add
supported_request_message_data_url_type_list
property to parameters ofUpdateNode
(IdP nodes only). - [DeliverTx] Add new functions (
AddIdentity
,UpdateIdentityModeList
,RevokeIdentityAssociation
,SetAllowedModeList
,UpdateNamespace
andSetAllowedMinIalForRegisterIdentityAtFirstIdp
). - [DeliverTx] Remove
ClearRegisterIdentityTimeout
,SetTimeOutBlockRegisterIdentity
,RegisterAccessor
andDeclareIdentityProof
function. - [Query] Remove
hash_id
property from parameters ofGetIdpNodes
. - [Query] Add
mode_list
andsupported_request_message_data_url_type_list
property to parameters ofGetIdpNodes
. - [Query] Add
supported_request_message_data_url_type_list
property to list ofnode
in result ofGetIdpNodes
. - [Query] Remove
hash_id
property from parameters ofGetIdpNodesInfo
. - [Query] Add
mode_list
andsupported_request_message_data_url_type_list
property to parameters ofGetIdpNodesInfo
. - [Query] Add
supported_request_message_data_url_type_list
property to list ofnode
in result ofGetIdpNodesInfo
. - [Query] Add
supported_namespace_list
property to parameters ofGetAsNodesByServiceId
. - [Query] Add
supported_namespace_list
property to parameters ofGetAsNodesInfoByServiceId
. - [Query] Add
supported_namespace_list
property to parameters ofGetServicesByAsID
. - [Query] Remove
hash_id
property from parameters ofCheckExistingIdentity
. - [Query] Add
reference_group_code
,identity_namespace
andidentity_identifier_hash
property to parameters ofCheckExistingIdentity
. - [Query] Remove
hash_id
property from parameters ofGetIdentityInfo
. - [Query] Add
reference_group_code
,identity_namespace
andidentity_identifier_hash
property to parameters ofGetIdentityInfo
. - [Query] Add
mode_list
property to result ofGetIdentityInfo
. - [Query] Add
allowed_identifier_count_in_reference_group
andallowed_active_identifier_count_in_reference_group
property to result ofGetNamespaceList
. - [Query] Remove
identity_proof
,private_proof_hash
,valid_proof
fromresponse_list
in result ofGetIdentityInfo
. - [Query] Add
supported_request_message_data_url_type_list
property to result ofGetNodeInfo
(IdP nodes only). - [Query] Add
supported_request_message_data_url_type_list
property to result ofGetNodesBehindProxyNode
(IdP nodes only). - [Query] Add new function (
GetReferenceGroupCode
,GetReferenceGroupCodeByAccessorID
,GetAllowedModeList
andGetAllowedMinIalForRegisterIdentityAtFirstIdp
). - [Query] Remove
GetIdentityProof
function.
IMPROVEMENTS:
- Update Tendermint version to v0.31.5.
BREAKING CHANGES:
- Change underlying data structure for app state storage.
- Remove IAVL dependency.
- Change DeliverTx logic for
recheck = false
.
IMPROVEMENTS:
- Update Tendermint version to v0.30.2.
- Add Prometheus support.
IMPROVEMENTS:
- Bundle ABCI app (proxy app) with Tendermint into single process.
- Use cleveldb instead of goleveldb.
- Update Tendermint version to v0.26.4.
- Change environment variable names and behavior
DB_NAME
changed toABCI_DB_DIR_PATH
.LOG_LEVEL
changed toABCI_LOG_LEVEL
.LOG_TARGET
changed toABCI_LOG_TARGET
and accepts only eitherconsole
orfile
.- New variable
ABCI_LOG_FILE_PATH
for specifying log file path whenABCI_LOG_TARGET
is set tofile
. - New variable
ABCI_DB_TYPE
for specifying database backend type to use. Options are the same as Tendermint'sdb_backend
config. Default iscleveldb
.
- [Docker] Build Tendermint bundled with ABCI app (proxy app) image with cleveldb support.
- [Migrate script] Move script to
migration-tools
repo.
SECURITY FIXES:
- [DeliverTx] Fix
nonce
does not get saved to state DB in every transactions.
BUG FIXES:
- [DeliverTx] Return invalid error when set non existent validator (
SetValidator
). - [DeliverTx] Check request is not closed or timed out (
SetDataReceived
).
BREAKING CHANGES:
- Change version of Tendermint to v0.26.3
IMPROVEMENTS:
- [Docker] Add set config
recheck
to true to start script. (Fix transactions stuck in mempool until more Tx is broadcasted in some cases when there are multiple validator nodes.) - [Info] Add app protocol version.
BUG FIXES:
- [Migrate script] Filter out
setLastBlock
key.
IMPROVEMENTS:
- [DeliverTx] Add
chain_history_info
property to parameters ofInitNDID
. - [Query] Add new function (
GetChainHistory
).
SECURITY FIXES:
- [CheckTx] Check duplicate
nonce
in every transactions.
IMPROVEMENTS:
- [Docker] Add set config
recheck
andrecheck_empty
to false to start script.
BUG FIXES:
- [CheckTx] Add previously removed (in v0.11.1) transaction checking.
BREAKING CHANGES:
- Use deterministic Protobuf marshalling.
- Use Protobuf to store node's token instead of string.
- Remove Tx price history recording on DeliverTx since it causes performance issue when there are a lot of stored token usage records.
- Remove
GetUsedTokenReport
function. - [DeliverTx] Check node ID is valid and role is
AS
(RegisterServiceDestinationByNDID
,EnableServiceDestinationByNDID
andDisableServiceDestinationByNDID
). - [DeliverTx] Add new functions (
RevokeAccessorMethod
). - [DeliverTx] Check request is closed with valid ial, proof and signature (
AddAccessorMethod
). - [DeliverTx] Add new functions (
SetLastBlock
) for disble create transaction.
IMPROVEMENTS:
- [Query] Add new function (
GetAccessorOwner
). - [Dependency] Update iavl version to 0.11.0.
- [Query] Add
creation_chain_id
property to result ofGetRequestDetail
. - [DeliverTx] Add new function (
EndInit
) for NDID.
NOTHING CHANGES, BUMP VERSION TO MATCH API REPOSITORY
IMPROVEMENTS:
- Align the happy path to the left edge.
BREAKING CHANGES:
- [DeliverTx] Check all IdP in
idp_id_list
is active (CreateRequest
). - [DeliverTx] Check all AS in
as_id_list
is active (CreateRequest
).
IMPROVEMENTS:
- [Query] Filter proxy node is not active
GetIdpNodesInfo
. - [Query] Filter proxy node is not active
GetAsNodesInfoByServiceId
.
BREAKING CHANGES:
- [DeliverTx] Delete
node_id
property from parameters ofSetMqAddresses
- [DeliverTx] Add
idp_id_list
property to parameters ofCreateRequest
- [DeliverTx] Add
purpose
property to parameters ofCreateRequest
- [Query] Return
purpose
insteadspecial
in result ofGetRequestDetail
. - [CheckTx] Check proxy node is active when creating a transaction.
- [DeliverTx] Add
data_schema
anddata_schema_version
property to parameters ofAddService
andUpdateService
. - [Query] Add
data_schema
anddata_schema_version
property to result ofGetServiceDetail
.
IMPROVEMENTS:
- Refactor code.
- [Query] Add
idp_id_list
property to result ofGetRequestDetail
. - [Key/Value store] Add accessorID in accessorGroupID relation.
- [Query] Add new function (
GetAccessorsInAccessorGroup
). - [Query] Add
creation_block_height
property to result ofGetRequestDetail
.
BUG FIXES:
- [DeliverTx] Fix unmarshal error in
UpdateNodeProxyNode
. - [DeliverTx] Remove invalid key of
MqAddresses
inAddNodeToProxyNode
.
BREAKING CHANGES:
- Rename functions
RegisterMsqAddress
toSetMqAddresses
RegisterMsqDestination
toRegisterIdentity
ClearRegisterMsqDestinationTimeout
toClearRegisterIdentityTimeout
SetTimeOutBlockRegisterMsqDestination
toSetTimeOutBlockRegisterIdentity
CreateIdentity
toRegisterAccessor
GetMsqAddress
toGetMqAddresses
- [DeliverTx] Update
RegisterNode
to be able to register proxy node. - [DeliverTx] Add new functions (
AddNodeToProxyNode
,UpdateNodeProxyNode
andRemoveNodeFromProxyNode
). - [Query] Add new functions (
GetNodesBehindProxyNode
,GetNodeIDList
). - [Key/Value store] Change all stored data format in app state DB from
JSON
toProtobuf
.
IMPROVEMENTS:
- Change Tx and Query input format from base64 string to byte array.
- [Query] Add
GetIdpNodesInfo
function for get IdP node with mq addresses. - [Query] Add
GetAsNodesInfoByServiceId
function for get AS node with mq addresses. - [Query] Add mq addresses property to result of
GetNodeInfo
. - [Query] Add
requester_node_id
to request returns from callingGetRequestDetail
BUG FIXES:
- [Query] Node name is invalid after update node (GetAsNodesByServiceId)
- [DeliverTx] Return invalid code and log when call
UpdateNode
by NDID
IMPROVEMENTS:
- [Query] Return log "not found" and value in JSON format when query not found
- [DeliverTx] Check service is active (RegisterServiceDestination)
IMPROVEMENTS:
- [Docker] Set umask to 027 and use user nobody to run service
- [Docker] Add security_opt: no-new-priviledges in docker-compose file
BREAKING CHANGES:
- [DeliverTx] Remove DisableMsqDestination, DisableAccessorMethod, EnableMsqDestination and EnableAccessorMethod functions
IMPROVEMENTS:
- [CheckTx] Check amount value to be greater than or equal to zero (token function)
- [CheckTx] Check node is active when creating a transaction
- [DeliverTx] Check service is active (SignData)
- [DeliverTx] Check service destination is active (SignData)
- [DeliverTx] Check service destination is approved by NDID (SignData)
IMPROVEMENTS:
- [CircleCI] Update configuration for tendermint 0.22.8
BUG FIXES:
- [DeliverTx] Can not update RP and AS node (UpdateNodeByNDID)
- [DeliverTx] Check msq desination is not timed out (ClearRegisterMsqDestinationTimeout)
BUG FIXES:
- [Docker] Update path for download tendermint
BREAKING CHANGES:
- Change version of Tendermint to v0.22.8
- Change JSON property name
requestId
torequest_id
in parameter of all methods
IMPROVEMENTS:
- [DeliverTx] Check request is not closed (CloseRequest)
- [DeliverTx] Check request is not timed out (TimeOutRequest)
- [CheckTx] Validate public key (PEM format, RSA type with at least 2048-bit length is allowed)
- [Docker] Update Tendermint version to v0.22.8
- [Docker] Change Tendermint config to not create empty block (
create_empty_blocks = false
) - [DeliverTx] Add valid_signature in response_valid_list to CloseRequest and TimeOutRequest parameter
- [DeliverTx] Add time out block of first MsqDestination (RegisterMsqDestination)
- [DeliverTx] Add function for set time out block (SetTimeOutBlockRegisterMsqDestination)
IMPROVEMENTS:
- Refactor code - Use switch-case instead of reflect pkg
- [DeliverTx] Remove check responseValid in CloseRequest and TimeOutRequest
- [Docker] Change Tendermint config to create empty block with interval of 30 seconds
- [DeliverTx] Add node_name to UpdateNodeByNDID parameter
BUG FIXES:
- [CheckTx] Return a correct code when receiving invalid transaction format
- [Query] Return a correct price when query "GetPriceFunc" with height
BREAKING CHANGES:
- Change version of Tendermint to v0.22.4
IMPROVEMENTS:
- [DeliverTx] Check responseValid in CloseRequest and TimeOutRequest
BREAKING CHANGES:
- [DeliverTx] Add master_public_key in parameter of InitNDID
FEATURES:
- [DeliverTx] Add new function (EnableMsqDestination, DisableMsqDestination, EnableAccessorMethod, DisableAccessorMethod, EnableService, DisableService, EnableNode, DisableNode, EnableNamespace, DisableNamespace, RegisterServiceDestinationByNDID, EnableServiceDestinationByNDID, DisableServiceDestinationByNDID, EnableServiceDestination, DisableServiceDestination)
- [CheckTx] Check method name
IMPROVEMENTS:
- [Docker] Use alpine:3.7 when building tendermint image
BREAKING CHANGES:
- Change version of Tendermint to v0.22.0
- [DeliverTx] Change transaction format
- [Query] Change query data format
- [DeliverTx] Before AS can RegisterServiceDestination need approval from NDID
- [DeliverTx] Change parameter of RegisterMsqDestination
- [Key/Value store] Add active flag in struct of MsqDestination, Accessor, Service , Node and Namespace
- [Query] Filter active flag (GetIdpNodes, GetAsNodesByServiceId, GetNamespaceList, GetServicesByAsID)
BUG FIXES:
- [DeliverTx] Fix missing
success
tag when creating a transaction with invalid signature
FEATURES:
- [CircleCI] Add a configuration for automatic test, build, and deploy image to dockerhub
BUG FIXES:
- [Query] Set special request if owner is IdP (GetRequestDetail)
BREAKING CHANGES:
- [Key/Value store] Remove key "NodePublicKeyRole"|<node’s public key> because allow to have duplicate key in network (unique only nodeID)
BUG FIXES:
- [DPKI] Fix when update public key with exist key in network and system set wrong role in stateDB
INITIAL:
- Initial release of NDID Smart Contract