sig
expression evaluates to true
if the signature provided with the transaction is valid and produced by the private key that corresponds to the above public key. The address (checksummed hash in base32) corresponding to this definition is A2WWHN7755YZVMXCBLMFWRSLKSZJN3FU.true
if the author supplies a preimage of the hash specified in the address definition.and
and or
. For example, this is a definition that requires two signatures:not
clause:sig
, hash
, address
, cosigned by
, and in merkle
cannot be negated.address
clause:in data feed
clause can be used to make queries about data previously stored on Obyte:true
if there is at least one previous message stored in Obyte database that has “data feed name” equal to “expected value”. Instead of =
, you can also use >
, <
, >=
, <=
, or !=
The data feed must be posted to Obyte decentralized database by one of the oracles whose addresses are “ADDRESS1”, “ADDRESS2”, … Since oracles post to the common database, we call them on-chain oracles.in merkle
clause below for a more practical way to achieve the same result.in merkle
is a more economical way to query the presence of a particular data entry in a large data set. Instead of posting every data entry in a data_feed
message, only the merkle root of the large data set is posted as a data_feed
, and the signer has to provide the data entry and its merkle path:true
if the specified address was seen as author in at least one past unit included in the last stable unit.true
if there was an input or output in the past (before last stable unit) that satisfies the specified condition. The syntax for the search condition is the same as for has
clause below.true
if there was a definition change of the specified address and the c-hash (checksummed hash) of the new definition is equal to the specified value.true
if the age of all inputs spent from this address satisfies the specified condition. The age is the difference between last ball mci and the input’s mci.true
if the specified address is attested by one of the listed attestors. The address can also be “this address”.has
clause:has
clause evaluates to true
if the transaction has at least one input or output that satisfies all the set conditions:what
: input
or output
, requiredasset
: ID of asset (44-character string) or base
for bytestype
: for inputs only, transfer
or issue
. If specified, it searches only transfers or only issuesamount_at_least
, amount_at_most
, amount
: amount must be at least, at most, or exactly equal to the specified valueaddress
: address where the output is sent to or the input is spent from, can be literal address or “this address” or “other address”has one
has exactly the same syntax but evaluates to true if there is exactly one input or output that satisfies the search conditions.true
if there is at least one pair of inputs or outputs that satisfy the search criteria and the fields specified in equal_fields
are equal. The first element of the pair is searched by the first set of filters, the second by the second, and the syntax for the search conditions is the same as in has
clause.has one equal
requires that there is exactly one such pair.true
if the sum of inputs or outputs that satisfy the filter is equal, at least, or at most the target value.has
clause.true
if the unit has a definition change of the specified address and the c-hash (checksummed hash) of the new definition is equal to the specified value.true
if last_ball_mci
of the current unit is greater than (other possible comparisons: >=
, <
, <=
, =
) than the specified value. It can be useful to make the address spendable only after some point in the future and not rely on any timestamp oracles.true
If the time is longer than the specified time. You can also use "=", "<", ">=", "<=", "!="
. This example returns true 2 hours after the deployment.