From this tutorial

addressbook(name receiver, name code, datastream<const char*> ds): contract(receiver, code, ds)

I'm not familiar with 'datastream' and Googling isn't turning up any precise documentation on what that means. It seems to be the type for 'ds' in this context. But it's unclear to me what that type is, or by extension -- what 'ds' is.


You can consider it SerialBuffer in eosjs. Action data is transmitted in the form of byte sequence. eosio::contract from which class you inherits when you write your own smart contract, it generates code for dispatching action by deserializing byte sequence (action data) to proper arguments for action. (eg. name from, name to, asset quantity, string memo for eosio.token::transfer)

Usually you don't need to use datastream by yourself, but if you need to generate packed bytes, or deserialize specific type of data, you can utilize datastream. Refer to this example.

  • Thanks! Is this just standard constructor that is always (or often) used? addressbook(name receiver, name code, datastream<const char *> ds) : contract(receiver, code, ds){}
    – 22289d
    Nov 1 '20 at 7:50
  • 1
    Yes, it's standard form of eosio contract constructor. Or, you can write using contract::contract, if you don't have jobs to handle in constructor.
    – conr2d
    Nov 1 '20 at 10:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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