3

I know that there is a concept called deferred transaction but how can I use this concept in transferring the EOS to another account. The scenario is:

I need to transfer certain amount of coins after a particular delay but as eosio.token account has authority to transfer coins, then how can I make a transfer using my custom contract which will be set by my account, to transfer the coins after a delay?

1 Answer 1

3

You need to call the transfer action of eosio.token contract with the appropriate arguments after your preferred delay:

void send(account_name from, account_name to, asset amount, string memo, uint64_t delay) { 
    eosio::transaction t{};
    t.actions.emplace_back(
        eosio::permission_level(from, N(active)), // with `from@active` permission
        N(eosio.token), // You're sending this to `eosio.token`
        N(transfer),   // to their `transfer` action
        std::make_tuple(from, to, amount, memo));  // with the appropriate args
    t.delay_sec = delay; // Set the delay
    t.send(eosio::string_to_name(memo.c_str()), from); // Send the transaction with some ID derived from the memo
   }
};

You'll need to set permissions accordingly

$ cleos set account permission <sender-account> active '{"threshold": 1,"keys": [{"key": "<sender-pubkey>","weight": 1}],"accounts": [{"permission":{"actor":"<contract-account>","permission":"eosio.code"},"weight":1}]}' owner -p <sender-account>
3
  • 1
    Thanks. Like always, to the rescue ;) . Just a small correction. t.send(eosio::string_to_name(memo.c_str()), amount); this should be t.send(eosio::string_to_name(memo.c_str()), from); Aug 9, 2018 at 9:16
  • but get this problem, no type named 'transaction' in namespace 'eosio Sep 3, 2018 at 7:54
  • @seaify-Freelancer you need to #include<eosiolib/transaction.hpp> and use eosio::transaction if it's not in your scope. here is a more complete example code-wise
    – confused00
    Sep 3, 2018 at 10:45

This site is temporarily in read-only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .