Hi,
I got a couple of requests for change for the ICRC-3 standard from outside the working group. This was the feedback I was waiting for before moving on with ICRC-3. The two suggestions are the following:
- point 2 of the Generic Block Schema section requires ICRC-3 blocks to have a field
tx: Mapwith a field of typeop: Textinside. The change request is to drop this requirement in favour of having a fieldtype: Textat top level which defines the type of the block. This type should follow a schema such as<standard_number><field_type>e.g. for ICRC-1 transfer block it would be1xfer. We should also propose a schema for custom blocks, e.g. prefix the type withcplus a unique code of some sort, so that custom standards could be supported. Note that for this to work<field_type>should never start with a digit. For backward compatibility with existing Ledgers (ck, SNS, …) we should still support the current approach of havingtx: Mapwith theop: Textfield inside but mark the new block style with the type at top level as the favored approach. - Add a new endpoint
icrc3_supported_block_typesto list all the supported block types. Given the open nature of ICRC-3 each client will always have to query the supported blocks from the Ledger to understand if they can interpret all the blocks. The original plan was to use theicrc1_supported_standardendpoint from ICRC-1 to query this info. Some people proposed to instead have an endpoint in ICRC-3 so that any Ledger, including the ones not supporting ICRC-1, could use ICRC-3. The endpointicrc3_supported_block_typesis also more fine grained compared toicrc1_supported_standards. Both the nameicrc3_supported_block_typesand the type returned are yet to be clarified.
We could discuss this tomorrow in the working group but I wanted to write it here first so that everybody can have a look.
What do you think?