0

let me preface this by saying that I'm using a public node. It's fully bootstrapped and up to date, and I followed these instructions to check.

I'm trying to call the mintOrBurn function of this Granadanet contract. If I look at the contracts received operations, I see my operation, oozff1hNb5dJZE8mmXHgLbcDQrJfeQf5PZWTrf2Wgu9xdY5bgU1.

In tzkt.io it says 'applied', but I realize that what the explorer considers applied vs what my local tezos-client considers applied is most likely different.

Here is the command I ran via the tezos-client:

tezos-client transfer 0 from tzBTC_admin to KT1VqarPDicMFn1ejmQqqshUkUXTCTXwmkCN \
                --entrypoint mintOrBurn \
                --arg 'Pair 100000000 "tz1eYpX4e1nu7e3cvtF7UvKFqUvWDahte1ot"' \
                --burn-cap 999

After executing that command, I'm stuck looking/waiting on a message in the CLI telling me "Waiting for the operation to be included...".

Here is the full output from that command:

Warning:
  
                 This is NOT the Tezos Mainnet.
  
           Do NOT use your fundraiser keys on this network.

Waiting for the node to be bootstrapped...
Current head: BLjcJEymSnzY (timestamp: 2021-07-24T14:10:57.000-00:00, validation: 2021-07-24T14:11:26.135-00:00)
Node is bootstrapped.
Estimated gas: 3609.785 units (will add 100 for safety)
Estimated storage: no bytes added
Operation successfully injected in the node.
Operation hash is 'oozff1hNb5dJZE8mmXHgLbcDQrJfeQf5PZWTrf2Wgu9xdY5bgU1'
Waiting for the operation to be included...

How long should I expect to wait when I see this message? I suspect I am waiting for a certain number of confirmations for the block. If so, how many confirmations does the tezos-client (or is it my node?) wait for by default?

2 Answers 2

0

It really depends on the fee you set; bakers have a simple algorithm to choose operations to include in a block. The algorithm looks at the fee and gas limit you choose for your operation. So depending on any operation congestion of which there is not really too terribly much right now, your operation may get put in quickly or not. Most bakers even have a min fee which they will just ignore anything below that.

It does appear that your operation will expire and then be completely ignored by all nodes' mempools if its not put into a block within 60 levels of the branch you select for your operation.

5
  • 2
    If the explorer says it is applied (as OP mentioned) then the operation has already been included into a block
    – Groxan
    Jul 25, 2021 at 18:11
  • @Groxan that's what I was thinking, but the command I executed never returns, it just hangs forever. Is this an issue with the tezos-client?
    – Whirlybird
    Jul 26, 2021 at 11:43
  • @Whirlybird yeah, I guess so
    – Groxan
    Jul 26, 2021 at 12:56
  • 1
    @Whirlybird tezos-client has --wait option, how many confirmation blocks before to consider an operation as included. You can set it to the none to skip the confirmations. tezos.gitlab.io/alpha/cli-commands.html#client-manual
    – dmirg
    Jul 26, 2021 at 13:39
  • @dmirg one seems a bit aggressive but I do appreciate that option. I wish I could understand what it waits for by default, I left my MacBook sitting for 24 hours with that command waiting to return and nothing happened.
    – Whirlybird
    Jul 27, 2021 at 9:56
0

Use estimate method from '@taquito/taquito' npm package. It gives estimated gas_limit, storage_limit and suggested fee. Then you can execute the transfer method in order to get your operation included in the block successfully without worrying about mempool, branch and waiting for an operation to be included.

import { TezosToolkit } from '@taquito/taquito';
const Tezos = new TezosToolkit('LOCAL TEZOS NODE RPC URL');

Tezos.contract
  .at('KT1NcdpzokZQY4sLmCBUwLnMHQCCQ6rRXYwS')
  .then((contract) => {
    const i = 7;

    return contract.methods.increment(i).toTransferParams({});
  })
  .then((op) => {
    println(`Estimating the smart contract call : `);
    return Tezos.estimate.transfer(op);
  })
  .then((est) => {
    println(`burnFeeMutez : ${est.burnFeeMutez}, 
    gasLimit : ${est.gasLimit}, 
    minimalFeeMutez : ${est.minimalFeeMutez}, 
    storageLimit : ${est.storageLimit}, 
    suggestedFeeMutez : ${est.suggestedFeeMutez}, 
    totalCost : ${est.totalCost}, 
    usingBaseFeeMutez : ${est.usingBaseFeeMutez}`);
  })
  .catch((error) => console.table(`Error: ${JSON.stringify(error, null, 2)}`));

This is the sample code to estimate values.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.