NNS Update: August 28, 2023

The FI Team will be submitting the following add canister proposal this Monday, 2023-08-28. DFINITY plans to vote on this proposal the following Thursday.

Proposals to be Submitted

# Proposal to Add ICP-Index Canister to NNS Subnet

Proposer: DFINITY Foundation

Git Hash: 1c3f9883dd2bd6d36b88ddd4bfe434d1d4372d52

Wasm Hash: 083cf14f68be2ac5bf9213f3d024078600d39e9ddb0be6530dda8aebd665515e

Init Arguments Hash: d954e72837fb2b3b77baba2443e059d44c4c7f7a4e9e983d405af27388b87ff9

## Features

- Add support for accountidentifier based search for transactions of the ICP ledger

## Wasm Verification

git fetch

git checkout 1c3f9883dd2bd6d36b88ddd4bfe434d1d4372d52

./gitlab-ci/container/build-ic.sh -c

sha256sum ./artifacts/canisters/ic-icp-index-canister.wasm.gz

## Argument Verification

didc encode -d rs/rosetta-api/icp_ledger/index/index.did -t '(InitArg)' '(record {ledger_id = principal "ryjl3-tyaaa-aaaaa-aaaba-cai"})' | xxd -r -p > ~/ledger_arg.bin

sha256sum ~/ledger_arg.bin

Will this be the same canister that is used for testing at the moment?

Also, will all operations contain valid created_at_times? Noticed that some were missing on the Transfer operation. Can’t recall where exactly.

The canister deployed in this proposal is very similar to the fqyhw-qqaaa-aaaal-acq6q-cai. although the hash of its wasm is not identical.

The created_at_times field is optional see: https://github.com/dfinity/ic/blob/master/rs/rosetta-api/icp_ledger/index/index.did.

1 Like

Yes i noticed it was optional, but for a Transfer operation i would expect that this data is always filled. What could be the reason that this isn’t filled? Is this an arg that need to be filled on the transfer call?

If you look at the ICRC-1 standard, more specifically the section on deduplication, you can see that the created_at_time field is used to deduplicate transactions in a certain time window. If a user is fine with their transaction not being deduplicated they can simply leave the field as None. The ledger will then not check whether the transaction has already been seen in the transaction window. If however, a user wants to make sure a certain transaction is only processed once during a transaction window, they would use the created_at_time. This is for example useful in asynchronous client-server environments during crash-recovery operations.

I hope this answers your question.

1 Like

The ICP Index canister is live at qhbym-qaaaa-aaaaa-aaafq-cai


Not clear to me neither so I just started a particular thread about this question @RMCS :point_right: ICP Index canister created_at_time timestamp

1 Like

@NikolasHai This is something we sometimes run into, any idea what it could be?