Skip to main content

Assertions

Like every program, bugs can occur and user input must be validated. EOS++ provides a clear cut way to do this.

Reverting state

Assertions are a way to check that a condition is true, and if it is not, the transaction will fail. When a transaction fails, all state changes that have occurred in the transaction will be rolled back. This means that any changes to persisted data / tables will be reverted as if the transaction never happened.

Check

The check function is how you validate conditions in EOS++. The function will check that the specified condition is true, and if it is not, the transaction will fail.

check(1 == 1, "1 should equal 1");

The interface for the check function simply takes a condition and a string message. If the condition is false, the message will be thrown as an error and the transaction will revert.

Logging non-strings

Since the check function takes a string message, you might be wondering how to log non-strings. This depends on the type of data you want to log, but here are some common examples:

Logging name

name thisContract = get_self();
check(false, "This contract is: " + thisContract.to_string());

Logging asset

asset myAsset = asset(100, symbol("EOS", 4));
check(false, "My asset is: " + myAsset.to_string());

Logging integers

int myInt = 100;
check(false, "My int is: " + std::to_string(myInt));