Mainnet contract execution

Hello Team,

First of all thank you for the hard work and progress of the Aeternity node and SDKs.

I would like to ask if somebody has experienced issues related to execution of smart contract calls on the mainnet.

What we are executing the following:

  • running deployment of 2 linked contracts
  • executing 13 tests with stateful calls and read calls to those contracts

Everything runs brilliantly well on testnet with average 6 secs for stateful calls and 1 sec for read calls.

However, running the same routine on the mainnet results into following:

  • rarely super delayed execution (minutes) per Tx
  • most of the times - handing Tx

The effect we observe on the client side using the JS SDK is either TTL timeout or similar to

UnhandledPromiseRejectionWarning: Error: While calling getTransactionByHash (hash), GET to http://3.124.2.21:3013/v2/transactions/th_2PbfvgdPeg3fNoPzixQdUtz55rVeZBGXqfGsymfEAK4pFku4iS failed with 404: Transaction not found

Our JS SDK is ver 6.1.2.

Many of the Transactions though are processed at a very late stage. Here is a look at the account activity history:

https://explorer.aepps.com/account/transactions/ak_2HCYV2b3QTg8GdCZjsXExDEm1Fw3WrXu8En4o1vyjoj1ArRoaX

We are running ver 5.2 of the node:

http://3.124.2.21:3013

and we’ve tested also with:

https://sdk-mainnet.aepps.com
https://node.mainnet.aeternal.io

Sometimes, magically, Transactions get processed on-time (within 30 secs), but most of the time client hangs till TTL expires.

Our theory is a bit mind-annoying: contract Tx get ignored by the majority of the miners. That is why we increased the nominal 1000000000 gas Price to 10000000000, but still this does not help.

A Question to devs who work on Aepps already working with mainnet contracts - is this a behavior you have observed?

Anyone who can help us improve the interaction with contracts on mainnet is welcome!

Thank you in advance for the help!

Regards,
Emil

hello @emosto, I believe that in this case the issue is due to the fact that the the urls that you mention there are load balancing between a couple (or more) nodes; what happens under the hood is that the SDK posts the transaction and then polls the node expecting to find it, but it can happen that is broadcasting to a node and polling to another and the nodes did not sync yet. This issue is related to the UnhandledPromiseRejectionWarning error and is being tracked here (and there is a pr already for that).

If you run your own node (not load balanced) you should not experience this issue.

The delay on mainnet to include a transaction, if you are experiencing it on your own node, it is likely unrelated to the above issue.

To understand better what is going on, could you use only your private node, run the procedure again and collect the logs (aeternity.log, aeternity_sync.log especially but better to zip the entire log folder)

Thank you for the thorough explanation! I will collect the log from the dedicated node and will post it here.

Greetings,
Emil

I was observing the very same issue few months ago on the testnet. I reported it but don’t know what happened next.

Hi,

Are you running smart contracts on the mainnet now? if yes, are they working fine?

Thanks!

Regards,
Emil

@emosto not there yet.

@emosto did you manage to get the logs ?