We have been running tests on local replica for the last three weeks.
A few days ago we started testing on the real IC network. Tests burned ~ 30Tcycles.
All canisters are written in Motoko and implement our own NFTA protocol.
The test tries to simulate real usage - minting, transferring, burning, purchasing with.
There were 3 IC network tests.
Each test ~ 300 threads working for ~14 hours each and doing ~ half-million transactions added to history. One NFTA transaction uses from 1 to 3 IC update transactions.
During tests, the subnet message throughput raised from ~13/s update calls to 90/s
During the first test canisters were loaded with ~3T cycles and at some point we started getting errors.
#system_transient Canister n7njf-sqaaa-aaaai-qcmhq-cai is out of cycles: requested 2000590000 cycles but the available balance is 2770416633363 cycles and the freezing threshold 2790027551738 cycles'
These errors were on inter-canister calls, which ruined the cluster data integrity.
Additionally, canisters using Hashmaps consumed unreasonable amounts of memory. 700mb for 65000records (accountid 32byte) â {Nat64, Nat64} (wasnât different during local tests)
Canister upgrades worked without issues.
Projected cycle costs were the same as measured costs.
During the next test, canisters were kept loaded with ~ 7Tcycles. There were no inter-canister call errors.
Hashmaps were replaced with Triemaps and the memory consumption dropped from 700mb to 25mb.
Memory = Prim.rts_memory_size()
Heap = Prim.rts_heap_size()
ICE = Inter-Canister call Errors caught with try-catch
Dashboard here - https://nftanvil.com/dashboard
Code here - https://github.com/infu/nftanvil
This is what the transaction history looks like.
Under load, there were unseen before client errors showing once in a while. However, these can easily be caught and retried.
Error: Server returned an error: Code: 503 () Body: Certified state is not available yet. Please try again...
TLDR: We are very happy with the results and launching is in sight.
The current cluster can support:
History transactions (auto-scaling) - unlimited
Nfts (auto-scaling)- unlimited - up to 327 million if no more canisters are added.
Non-fungible token inventories - 32 million - unlimited with rebalancing.
Fungible token accounts - 10 million - few options are available to scale that up too.
You can try the dapp. It is in test mode and after authenticating with IE you are given 8 testICP. All tokens fungible & non-fungible are temporary during the tests and will be erased.
https://nftanvil.com/mint