Skip to main content

push action

Description

Push a transaction with a single action

Positionals

-contract Type: Text - The account providing the contract to execute

-action Type: Text - The action to execute on the contract

-data Type: Text - The arguments to the contract

Options

-h,--help - Print this help message and exit

-x,--expiration - set the time in seconds before a transaction expires, defaults to 30s

-f,--force-unique - force the transaction to be unique. this will consume extra bandwidth and remove any protections against accidently issuing the same transaction multiple times

-s,--skip-sign - Specify if unlocked wallet keys should be used to sign transaction

-j,--json - print result as json

-d,--dont-broadcast - don't broadcast transaction to the network (just print to stdout)

-p,--permission Type: Text - An account and permission level to authorize, as in 'account@permission'

--max-cpu-usage-ms UINT - set an upper limit on the milliseconds of cpu usage budget, for the execution of the transaction (defaults to 0 which means no limit)

--max-net-usage UINT - set an upper limit on the net usage budget, in bytes, for the transaction (defaults to 0 which means no limit)

--delay-sec UINT - set the delay_sec seconds, defaults to 0s

Output

For actions that return a value clio has a line which is prefixed with =>.

Let's consider for exemplification the three actions defined below. The first two are rstring and ruint, which return the value passed as input parameter to them, and the third one is rtmp returning a default tmp object.

struct tmp {
uint32_t id = 1;
std::vector<uint8_t> list{ 1, 2 };
};

[[sysio::action]]
std::string rstring(const std::string & str) { return str; }

[[sysio::action]]
uint16_t ruint(uint16_t i) { return i; }

[[sysio::action]]
tmp rtmp() { return tmp{}; }

The clio commands and their respective outputs are.

> clio push action sysio rstring '{"str":null}'  -p sysio@active

executed transaction: 1e72a3ef1fa01a9c90b870fe86bf31413c6a2f40a2722ca72d9dd707f58851af 96 bytes 116 us
# sysio <= sysio::rstring {"str":""}
=> return value: ""

> clio push action sysio rstring '{"str":"test"}' -p sysio@active

executed transaction: 2484ba021683bb3c6daaabe291ba291e2689d1be899a293d0a09cc68cf0967fb 96 bytes 116 us
# sysio <= sysio::rstring {"str":"test"}
=> return value: "test"

> clio push action sysio ruint '{"i":42}' -p sysio@active

executed transaction: 12c51fd27fad9bb0fa959037a72093ad0b168f5846e916a0e9a295c8416bdf9f 96 bytes 138 us
# sysio <= sysio::ruint {"i":42}
=> return value: 42

The rtmp action output, returning a default tmp object, looks like this:

> clio push action sysio rtmp '{}'  -p sysio@active

executed transaction: 42386687d94695d77d67cf901cf8d1a4f83ac9f89382f0b01f3fb51267cc21cd 96 bytes 110 us
# sysio <= sysio::rtmp ""
=> return value: {"id":1,"list":[1,2]}

When it is not possible to decode the return value, for example when ABI doesn’t contain information about an action return value, output will look like this:

=>                          return value (hex): 1400000001000770656e64696e6700000000

If the length of the return value string is more than 100 chars the string will be truncated to the first 100 chars and three dots ... will be added at the end. It's similar to what clio does to action parameters output.

> clio push action sysio rstring '{"str":"qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"}'  -p sysio@active
executed transaction: 9fb35c72dbccadb4ff7b72a3a046543fbe2ae36eea70265f2b8356e8192c3f0e 248 bytes 176 us
# sysio <= sysio::rstring {"str":"qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...
=> return value: "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...